Programing

iOS 6에서 주어진 너비로 NSAttributedString의 높이를 계산하는 방법

lottogame 2020. 12. 3. 07:20
반응형

iOS 6에서 주어진 너비로 NSAttributedString의 높이를 계산하는 방법


중복 가능성 :
고정 너비에서 NSAttributedString의 높이를 얻는 방법

이제 iOS 6에서 NSAttributedString을 사용할 수 있습니다. 레이아웃을 위해 고정 너비에서 NSAttributedString의 필요한 높이를 계산하는 방법을 알고 싶습니다. NSString과 동일 - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size하지만 NSAttributedString에 해당하는 것을 찾고 있습니다.

NSAttributedStrings의 그리기 크기를 계산하려면 두 가지 방법을 사용할 수 있습니다.

  1. - (CGSize)size 너비를 고려하지 않기 때문에 사용할 수 없습니다.
  2. 나는 시도 - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context했지만 어떻게 든 올바른 높이를주지 않습니다. 나는 방법이 버그가 있다고 생각합니다. 다음 코드를 실행하면 bounding size: 572.324951, 19.000000주어진 너비 200을 무시합니다. 높이 100과 같은 값을 제공해야합니다.
    NSMutableAttributedString * attributedString = [[NSMutableAttributedString 할당] 초기화];
    NSDictionary * attributes = @ {NSFontAttributeName : [UIFont fontWithName : @ "HelveticaNeue"size : 15], NSForegroundColorAttributeName : [UIColor blueColor]};
    [attributedString appendAttributedString : [[NSAttributedString alloc] initWithString : @ "Attributed String \ n"attributes : attributes]];
    [attributedString appendAttributedString : [[NSAttributedString alloc] initWithString : @ "Attributed String \ n"attributes : attributes]];
    [attributedString appendAttributedString : [[NSAttributedString alloc] initWithString : @ "Attributed String \ n"attributes : attributes]];
    [attributedString appendAttributedString : [[NSAttributedString alloc] initWithString : @ "Attributed String \ n"attributes : attributes]];
    [attributedString appendAttributedString : [[NSAttributedString alloc] initWithString : @ "Attributed String \ n"attributes : attributes]];

    CGRect 프레임 = [attributedString boundingRectWithSize : CGSizeMake (200, 1000) 옵션 : 0 context : nil];
    NSLog (@ "경계 크기 : % f, % f", frame.size.width, frame.size.height);

Mac OS X에는 사용할 수있는 다른 방법이 있지만 iOS에는 사용할 수 없습니다.


옵션 2는 적절한 매개 변수를 사용하여 iOS에서 작동합니다.

NSAttributedString *attrStr = ... // your attributed string
CGFloat width = 300; // whatever your desired width is
CGRect rect = [attrStr boundingRectWithSize:CGSizeMake(width, 10000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];

options매개 변수에 대한 적절한 값이 없으면 잘못된 높이를 얻게됩니다.

또한 attrStr글꼴 속성 포함되어 있어야 합니다. 글꼴이 없으면 크기를 제대로 계산할 방법이 없습니다.

참고 URL : https://stackoverflow.com/questions/14409897/how-to-calculate-the-height-of-an-nsattributedstring-with-given-width-in-ios-6

반응형