UILabel没有使用自动布局完全调整大小

时间:2015-04-11 11:07:53

标签: ios autolayout uilabel

我使用UILabel使用自动布局遇到一个奇怪的问题,在iphone 4s / 5 / 5s中它的内容大小减去了一行(让我疯了)(在6/6 +上工作正常)

这是我的故事板设置,我已使用显式

设置首选宽度

enter image description here

我尝试在UITableViewCell

中添加代码
self.describe.preferredMaxLayoutWidth = self.describe.frame.size.width

但问题仍然存在

这是我的问题

enter image description here

修改

这是我获得身高

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

故事板中名为“地址”的标签(您可以在此问题的第一张图片中找到它)正常工作

2 个答案:

答案 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;
}

修改

请点击此链接,它可以帮助您

Dynamic Cells

或尝试

在awakefromnib方法中

yourCell.m

- (void)awakeFromNib
{
    [super awakeFromNib];
    [self setNeedsUpdateConstraints];
    [self updateConstraintsIfNeeded];
}

编辑 - 2

你的换行模式是什么,应该是

enter image description here

修改:3

如果您对UILable使用高度限制,那么您应该提供“大于或等于"高度autoLayout的关系为你修改高度。

Relation Height

答案 1 :(得分:0)

如果我已正确理解您的问题,那么您对自动布局没有任何问题。您可以通过自动布局告诉标签消耗所需的宽度和高度。但是,您可能想要检查标签中允许的线数。

enter image description here

如果查看故事板中的大小检查器,可以通过在“行”字段中指定数字来指定要显示的行数。如果它是“0”则表示您的Label可以获取所有内容,但如果您为标签设置了尺寸,则可能会遇到麻烦。因此,某些内容将被截断。现在,您可以将属性检查器中的“线”字段设置为零并设置宽度和高度,也可以指定应允许的行数,并再次使用自动布局设置大小。