我遇到了这个奇怪的问题,我的约束导致UILabel(标题标签)是一个固定的高度,而不是根据文本动态改变高度。
我有一个视图(垂直视图),上面的标签上有一个顶部约束。垂直视图包含一个视图(称为视图),我将其用作分隔符,从上到下居中,宽度为1.分隔符左侧是UIImageView(左图像视图),约束前导,顶部,bottom等于superview,尾随等于View。我想对分隔符右侧的UIImageView执行完全相同的操作,但这是我的问题出现的地方。
如果我使用如下所示的固定高度,垂直视图上方的UILabel会动态地改变其高度,但这显然不是我希望右侧的UIImageView出现的方式。我希望它类似于分隔符左侧的UIImageView,具有相同的高度和宽度。
如果我将右边的UIImageView的顶部约束设置为超视图垂直视图,类似于分隔符左侧的UIImageView,则垂直视图上方的UILabel不再动态更改高度。 UILabel现在有一个固定的高度,我认为这是因为UILabel的高度> = 14。
如何正确设置约束,以便我可以将两个UIImageViews彼此相邻并且在垂直视图中包含相等和高度,并且仍然具有垂直视图上方的UILabel动态更改高度,具体取决于我设置UILabel的文本到?
答案 0 :(得分:1)
在RightImageView上,你首先需要摆脱" Height = 50"约束。这是导致它变小的原因。
接下来,如果仅此一项不能解决问题,您是否可以尝试使用超视图为约束设置以下约束而不是(而是使其镜像为LeftImageView):
这应该允许视图保持相同的高度和宽度(假设垂直容器视图的左/右边缘之间的距离相同,并且分隔符之间的距离相同)。
现在,确保分隔符宽度的大小约束设置为1而不是> = 1.另外,请确保垂直容器视图的压缩率低于Label。
最后一个注意事项 - 您的屏幕截图显示了IB在LeftImageView上显示的结果(带有黄色虚线框)。一个你正确更新你的约束,这个黄色框应该消失。
关于UILabel - 如果您希望动态增长,则需要执行以下操作:
myUILabel.numberOfLines = 0;
myUILabel.text = @"Enter large amount of text here";
[myUILabel sizeToFit];