我使用UILabel使用自动布局遇到一个奇怪的问题,在iphone 4s / 5 / 5s中它的内容大小减去了一行(让我疯了)(在6/6 +上工作正常)
这是我的故事板设置,我已使用显式
设置首选宽度
我尝试在UITableViewCell
类
self.describe.preferredMaxLayoutWidth = self.describe.frame.size.width
但问题仍然存在
这是我的问题
修改
这是我获得身高
self.address.preferredMaxLayoutWidth = CGRectGetWidth(self.address.bounds)
self.describe.preferredMaxLayoutWidth = CGRectGetWidth(self.describe.bounds)
self.address.text = data.address == nil ? "no data" : data.address
self.describe.text = data.describe == nil ? "no data" : data.describe
self.layoutIfNeeded()
self.updateConstraintsIfNeeded()
return self.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height
故事板中名为“地址”的标签(您可以在此问题的第一张图片中找到它)正常工作
答案 0 :(得分:1)
试试这可能会对你有所帮助
YourCell.m
- (void)layoutSubviews
{
[self.contentView updateConstraintsIfNeeded];
[super layoutSubviews];
[self.contentView layoutIfNeeded];
CGFloat width = [UIScreen mainScreen].bounds.size.width - 60;//your desire width
self.yourLAbel.preferredMaxLayoutWidth = width;
}
修改强>
请点击此链接,它可以帮助您
或尝试
在awakefromnib方法中yourCell.m
- (void)awakeFromNib
{
[super awakeFromNib];
[self setNeedsUpdateConstraints];
[self updateConstraintsIfNeeded];
}
编辑 - 2
你的换行模式是什么,应该是
修改:3 强>
如果您对UILable使用高度限制,那么您应该提供“大于或等于"高度autoLayout的关系为你修改高度。
答案 1 :(得分:0)
如果我已正确理解您的问题,那么您对自动布局没有任何问题。您可以通过自动布局告诉标签消耗所需的宽度和高度。但是,您可能想要检查标签中允许的线数。
如果查看故事板中的大小检查器,可以通过在“行”字段中指定数字来指定要显示的行数。如果它是“0”则表示您的Label可以获取所有内容,但如果您为标签设置了尺寸,则可能会遇到麻烦。因此,某些内容将被截断。现在,您可以将属性检查器中的“线”字段设置为零并设置宽度和高度,也可以指定应允许的行数,并再次使用自动布局设置大小。