循环更改标签字体大小不会更改文本大小

时间:2019-04-16 17:52:40

标签: ios swift fonts uilabel

我有一个带有4个标签的视图,有时它从屏幕上消失了。

为避免这种情况,我正尝试如下更改标签文本的大小:

while DefinitionAndExampleView.frame.maxY > view.frame.size.height {
    label1.font = UIFont.systemFont(ofSize: (label1.font.pointSize - 1))
    label2.font = UIFont.systemFont(ofSize: (label2.font.pointSize - 1))
    label3.font = UIFont.systemFont(ofSize: (label3.font.pointSize - 1))
    label4.font = UIFont.systemFont(ofSize: (label4.font.pointSize - 1))
}

但是,由于4个标签的点大小不变,因此while循环保持运行并且永远不会终止。

为什么标签的磅值没有变化?

2 个答案:

答案 0 :(得分:0)

如果要确保标签不会出现在屏幕上,则可以将AdjustFontSizeToFitWidth设置为true。这样,您的标签文本不会从屏幕上消失,只会改变大小。另外,添加宽度限制以确保标签的宽度不会扩大。

label1.adjustsFontSizeToFitWidth = true

答案 1 :(得分:0)

您正在从DefinitonAndExampleView的框架中检查maxY,也有可能框架仅在更新UI后才重新计算其大小。我强烈建议您在标签中使用约束,以免出现约束。 您可以按照苹果官方的documentation进行操作。