我使用下面的代码来计算a的界限 UILabel
CGRect bound = [lblName.text boundingRectWithSize:(CGSize){206, 99999}
options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
attributes:stringAttributes
context:nil];
Run Code Online (Sandbox Code Playgroud)
这UILabel是一个嵌入在a UIScrollView中的子视图UITableViewCell.
在这里我得到了什么

我做了一个试验,其使用UILabel在一个表格单元格,以及UILabel在UIScrollView单独,和结果我预期

请注意,UILabel在所有这些情况下,所有设置(字体,换行模式等)都是相同的.在boundingRectWithSize所有这些情况下返回结果相同,唯一的区别就是这样UILabel呈现文本.
这里有什么问题?我错过了什么吗?
更新:只有当我从nib加载UILabel时才会发生这种情况,如果是以编程方式创建的,则没有问题.(我的项目从xcode 4迁移到xcode 5)
Tim*_*hen 16
试试这个:
bound.size.height += 1;
Run Code Online (Sandbox Code Playgroud)
更新:
根据Apple的文件
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context
Run Code Online (Sandbox Code Playgroud)
此方法返回小数大小(在返回的CGRect的大小组件中); 要使用返回的大小来调整视图大小,必须使用ceil函数将其值提升到最接近的更高整数.
所以你可能想要使用这种方法:
bound.size.height = ceil(bound.size.height);
Run Code Online (Sandbox Code Playgroud)
Dav*_*Nix 10
我在一些标签上看到了相同的行为,在iOS 6中看起来很好,但在iOS 7中,它们在图片的顶部和底部都有额外的填充.
这是我必须做的才能最终使其正确布局viewDidLoad- 适用于iOS 6和7.
self.someLabel.autoresizingMask = UIViewAutoresizingNone;
self.someLabel.frame = CGRectMake(
self.someLabel.frame.origin.x,
self.someLabel.frame.origin.y,
labelWidth, // define elsewhere if you're targeting different screen widths
self.someLabel.bounds.size.height);
[self.someLabel sizeToFit];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8166 次 |
| 最近记录: |