반응형
iOS 6에서 주어진 너비로 NSAttributedString의 높이를 계산하는 방법
이제 iOS 6에서 NSAttributedString을 사용할 수 있습니다. 레이아웃을 위해 고정 너비에서 NSAttributedString의 필요한 높이를 계산하는 방법을 알고 싶습니다. NSString과 동일 - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size
하지만 NSAttributedString에 해당하는 것을 찾고 있습니다.
NSAttributedStrings의 그리기 크기를 계산하려면 두 가지 방법을 사용할 수 있습니다.
- (CGSize)size
너비를 고려하지 않기 때문에 사용할 수 없습니다.- 나는 시도
- (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
글꼴 속성 이 포함되어 있어야 합니다. 글꼴이 없으면 크기를 제대로 계산할 방법이 없습니다.
반응형
'Programing' 카테고리의 다른 글
두 배열을 비교하고 일반적이지 않은 값을 얻습니다. (0) | 2020.12.03 |
---|---|
Homebrew를 재설치하는 가장 좋은 / 안전한 방법은 무엇입니까? (0) | 2020.12.03 |
Java의 assert 문을 사용하여 메시지를 지정할 수 있습니까? (0) | 2020.12.03 |
숭고한 텍스트 편집기에서 어떤 GUI 라이브러리를 사용합니까? (0) | 2020.12.03 |
Android AsyncTaskLoader가 loadInBackground를 시작하지 않습니까? (0) | 2020.12.03 |