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它可能对你有帮助
或尝试
yourCell.m 在 awakefromnib 方法中
- (void)awakeFromNib
{
[super awakeFromNib];
[self setNeedsUpdateConstraints];
[self updateConstraintsIfNeeded];
}
编辑 - 2
你的换行方式是什么,应该是
编辑:3
如果您正在为 UILable 使用高度限制,以便您应该为高度 autoLayout 提供“大于或等于”关系,请为您修改高度。
如果我没有正确理解你的问题,那么你的自动布局没有任何问题。您可以通过自动布局告诉您的标签使用您想要的宽度和高度。但是,您可能想检查标签中允许的行数。
如果您查看情节提要中的大小检查器,您可以通过在行字段中指定数字来指定要显示的行数。如果它是“0”,那么这意味着您的标签可以包含所有内容,但是如果您为标签设置了大小,那么您可能会遇到麻烦。因此,一些内容将被截断。现在,您可以将属性检查器中的 "Lines" 字段设置为零并设置宽度和高度,或者您可以指定它应该允许的行数并再次使用自动布局设置大小。
我在使用带有 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它可能对你有帮助
或尝试
yourCell.m 在 awakefromnib 方法中
- (void)awakeFromNib
{
[super awakeFromNib];
[self setNeedsUpdateConstraints];
[self updateConstraintsIfNeeded];
}
编辑 - 2
你的换行方式是什么,应该是
编辑:3
如果您正在为 UILable 使用高度限制,以便您应该为高度 autoLayout 提供“大于或等于”关系,请为您修改高度。
如果我没有正确理解你的问题,那么你的自动布局没有任何问题。您可以通过自动布局告诉您的标签使用您想要的宽度和高度。但是,您可能想检查标签中允许的行数。
如果您查看情节提要中的大小检查器,您可以通过在行字段中指定数字来指定要显示的行数。如果它是“0”,那么这意味着您的标签可以包含所有内容,但是如果您为标签设置了大小,那么您可能会遇到麻烦。因此,一些内容将被截断。现在,您可以将属性检查器中的 "Lines" 字段设置为零并设置宽度和高度,或者您可以指定它应该允许的行数并再次使用自动布局设置大小。