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

UILabel doesn't fully resize using Auto Layout

我在使用带有 UILabel 的自动布局时遇到了一个奇怪的问题,在 iphone 4 秒/5/5 秒(它在 6 上工作正常) /6+)

这是我的故事板设置,我已经设置了显式的首选宽度

我尝试在 UITableViewCell class

中添加代码
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

故事板中名为 "Address" 的标签(您可以在这个问题的第一张图片中找到它)工作正常

试试这个可能对你有帮助

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

编辑:

请关注这个link它可能对你有帮助

Dynamic Cells

或尝试

yourCell.m 在 awakefromnib 方法中

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

编辑 - 2

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

编辑:3

如果您正在为 UILable 使用高度限制,以便您应该为高度 autoLayout 提供“大于或等于”关系,请为您修改高度。

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

如果您查看情节提要中的大小检查器,您可以通过在行字段中指定数字来指定要显示的行数。如果它是“0”,那么这意味着您的标签可以包含所有内容,但是如果您为标签设置了大小,那么您可能会遇到麻烦。因此,一些内容将被截断。现在,您可以将属性检查器中的 "Lines" 字段设置为零并设置宽度和高度,或者您可以指定它应该允许的行数并再次使用自动布局设置大小。