是否可以创建一个UILabel子类,根据它是否有足够的空间自动更新其文本?与标签添加省略号的方式类似。
我想创建两个属性preferredText
和alternateText
,并根据可用空间量自动选择标签。所以,我可以做preferredText = @"Count text: 1024"; alternateText = @"1024";
。
我当然看了intrinsicContentSize
,但我认为应该始终返回基于preferredText
的值。我还查看了覆盖systemLayoutSizeFittingSize
和systemLayoutSizeFittingSize:...
,但在自动布局期间从不调用这些方法。我也尝试覆盖layoutSubviews
,但此时系统已经决定了它对标签的要求有多大。更改文本可能会导致无限循环。
理想情况下,我想要一个可以应用于其他视图类型的通用解决方案。例如,如果空间不足,自定义uibutton可能会选择不同的图像。
答案 0 :(得分:0)
您需要查看首选文本和标签大小,然后查看文本所需的大小(使用boundingRectWithSize...
轻松完成)并查看它是否合适。根据您的学习内容,您可以指定首选文本或备用文本。
(然而,最好让标签根据文本调整自身大小,这也是它想要自动执行的操作。或者你可以利用标签很乐意缩小其字体的事实大小,如果这是使文本适合所需的。)