3 回答

TA貢獻1812條經驗 獲得超5個贊
NSString+UIKit
sizewithFont:...
UIStringDrawing
UIKit
boundingRectWithSize:...
NSAttributedString
NSStringDrawing
NSString
boundingRectWithSize:...
NSAttributeString
NSString
NSAttributeString
NSString
sizeWithFont:...
NSAttributeString
boundingRectWithSize
NSString
sizeWithFont:constrainedToSize:
:
過去的情況是:
NSString *text = ...;CGFloat width = ...;UIFont *font = ...;CGSize size = [text sizeWithFont:font constrainedToSize:(CGSize){width, CGFLOAT_MAX}];
可替換為:
NSString *text = ...;CGFloat width = ...;UIFont *font = ...;NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: font}];CGRect rect = [attributedText boundingRectWithSize:(CGSize){width, CGFLOAT_MAX} options:NSStringDrawingUsesLineFragmentOrigin context:nil];CGSize size = rect.size;
在IOS 7和更高版本中,此方法返回小數大小(在返回的大小組件中)。 CGRect
);若要使用返回的大小來調整視圖的大小,必須使用ceil函數將其值提高到最近的較高整數。
CGFloat height = ceilf(size.height);CGFloat width = ceilf(size.width);

TA貢獻1773條經驗 獲得超3個贊
sizeWithFont
sizeWithAttributes
.
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)NSString *text = @"Hello iOS 7.0";if (SYSTEM_VERSION_LESS_THAN(@"7.0")) { // code here for iOS 5.0,6.0 and so on CGSize fontSize = [text sizeWithFont:[UIFont fontWithName:@"Helvetica" size:12]];} else { // code here for iOS 7.0 CGSize fontSize = [text sizeWithAttributes: @{NSFontAttributeName: [UIFont fontWithName:@"Helvetica" size:12]}];}
- 3 回答
- 0 關注
- 667 瀏覽
添加回答
舉報