我有一个方法可以给我一个完美的 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)为什么要删除这个方法?是因为与其他方法重叠吗?