使用UILabel使用自动布局时遇到一个奇怪的问题,它的大小调整到内容大小减去一行(让我疯狂)。所以基本上,当它缩小到iPhone 5或6时,它似乎到达应该减去几个像素的位置,最后导致椭圆形。它在6+上工作正常,这是XIB的大小。
这里是XIB的样子以及我设置的约束。标签是"这里的大长标签是事件描述"。
基于这个stack post,我以为我会想出来的。我尝试了帖子中提到的两种方法。屏幕截图中的所有四个约束都设置为1,000。如果我按照帖子所说的那样做,并添加一个优先级为500的高度约束,这个约束小于垂直拥抱和垂直压缩阻力优先级,它仍然无法工作。我还没有设置高度约束,保持首选宽度设置并设置了前导和尾随空间约束,这在评论中提到。行数设置为0。
要尝试提供更多详细信息,UILabel
的{{1}}设置为UIView
。然后,我将contentView
添加到contentView
。 UIScrollView
通过将UIScrollView
固定为0到四个边来自动调整大小。 contentView
也受限于屏幕宽度(不理想,但只有我能够使其工作 - 不确定它是否与此问题有关)。我在控制台中没有遇到任何约束问题。 contentContainer
的{{1}}设置为translatesAutoresizingMaskIntoContraints
。这是NO
在运行时的样子:
底部长一行应该适合。有人请帮助我!
答案 0 :(得分:3)
我想我可能已经解决了这个问题,但解决方案看起来很糟糕。这似乎是设置preferredMaxLayoutWidth
的问题。它适用于我为iPhone 6+设置的内容,但出于某种原因,iPhone 5/6上的宽度几乎不足。刚补充一下:
self.eventDescriptionLabel.preferredMaxLayoutWidth = self.eventDescriptionLabel.frame.size.width;
现在它运作正常。