【发布时间】:2013-08-21 08:19:17
【问题描述】:
我有一个方法可以给我一个完美的 UITextView 大小给定字符串长度(具有相应的正确字体大小):
- (NSInteger) heightOfLabel:(NSString*) string {
CGSize maximumLabelSize = CGSizeMake([[UIScreen mainScreen] bounds].size.width - 40, FLT_MAX);
CGSize expectedLabelSize = [[NSString stringTrimmedForLeadingAndTrailingWhiteSpacesFromString:string]
sizeWithFont:[UIFont systemFontOfSize:15]
constrainedToSize:maximumLabelSize
lineBreakMode:NSLineBreakByWordWrapping];
return expectedLabelSize.height + 5;
}
事实上,它仍然给我一个完美的契合,即使在 iOS7 中。虽然现在它提出了一个警告方法,说我不应该使用'sizeWithFont:contrainedToSize:lineBreakMode'。
它现在说我应该使用 -boundingRectWithSize:options:attributes:context:
这个方法对 iOS7 来说并不新鲜,因此我认为可以在堆栈溢出时询问它,而不是去苹果官方开发者论坛。
我有三个问题:
1) 因为它已被弃用,这是否意味着我一定要更换它,尽管它仍然有效?
2) 我尝试了许多不同的 boundingRectWithSize: 方法,有各种变量,但它从来都不是完美的,它似乎总是有点过分(正如许多 stackoverflow 问题所指出的那样) - 是否有一个完美的替代品,这个不推荐使用的方法这和我以前的方法完全一样,而且麻烦最少?
3) 为什么去掉这个方法?是因为和这个其他方法有重叠吗?
【问题讨论】:
-
参考这个link。
标签: objective-c nsstring deprecated