我在UITableViewCell中有一个UILabel。 UILabel的高度取决于使用自动布局约束的UITableViewCell的高度。 UILabel的宽度为176.0
且已修复。
我在UILabel中使用boundingRectWithSize:options:attributes:context:
来确定UITableViewCell的高度。
以下是在interface-builder
中显示UILabel配置的屏幕截图
这是获取UILabel文本的boundingRect的代码。
NSString *text = @"Extra long goods charge";
CGSize maxSize = CGSizeMake(176.0f, MAXFLOAT);
CGRect rect = [text boundingRectWithSize:maxSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16.0]}
context:nil];
返回的尺寸为152.132813, 18.1796875
,但此尺寸不足以包含Extra long goods charge
文字。事实上,即使是大小为176, 18
的矩形也不能包含此文本。
我的猜测是,我在某种程度上在使用boundingRectWithSize
答案 0 :(得分:0)
尝试改变。换行符为"字符换行"并添加约束作为标签高度。 查看带有大小的边界矩形是否返回正确的值。
如果没有,则删除所有约束并检查标签高度并根据所有标签高度(boundingrectwithSize返回的值)计算行高应该是什么,并调整heightForRowAtIndexPath委托中单元格的高度UITableView的方法。这可能是您的文字未显示的另一个原因,尽管标签的高度显示了预期的内容。
尝试一次。
[编辑]
我没有正确地得到你应该得到的适当高度,这就是为什么它弄乱了文本的显示。 如果是这种情况,那么你可以尝试这种方法。
NSString *message =@"Your text here!";
CGSize expectedLabelSize = [message sizeWithFont:[UIFont systemFontOfSize:16.0f] constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByCharWrapping];
虽然如果是这种情况,那么上面的方法在iOS 7中已被弃用,但它的工作原理很好。