Hei*_*iko 6 objective-c ios6 ios7 xcode5
最近使用XCode 5将我的应用程序更新到iOS 7,发现boundingRectWithSize给出了不同的高度(在大小部分)计算属性字符串的边界.
以下行给出了iOS 6和iOS 7之间的不同结果:
CGRect rect = [self boundingRectWithSize:CGSizeMake(inWidth, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
Run Code Online (Sandbox Code Playgroud)
"self"是NSAttributedString,"inWidth"是字符串应该适合的最大宽度(以像素为单位).
我认为这是因为iOS 7具有与iOS 6不同的字体处理.
任何人都有一个工作的解决方案来计算两个iOS版本的字符串的高度?
由于我们无法对大于4.3的所有iOS使用sizeWithAttributes,因此我们必须为7.0和之前的iOS编写条件代码.所以我建议使用给定的解决方案
UILabel *gettingSizeLabel = [[UILabel alloc] init];
gettingSizeLabel.font = [UIFont fontWithName:[AppHandlers zHandler].fontName size:16];
gettingSizeLabel.text = @"YOUR TEXT HERE";
gettingSizeLabel.numberOfLines = 0;
CGSize maximumLabelSize = CGSizeMake(310, 9999); // this width will be as per your requirement
CGSize expectedSize = [gettingSizeLabel sizeThatFits:maximumLabelSize];
Run Code Online (Sandbox Code Playgroud)
该选项非常好,并且在没有条件代码的所有iOS中都能顺利运行.
我遇到了同样的问题,对我来说,高度上的简单 ceil() 解决了它。还要确保为您的属性字符串设置正确的属性,例如
@{NSParagraphStyleAttributeName: paragraphStyle, NSFontAttributeName : label.font}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6567 次 |
| 最近记录: |