我想要让我的文本适应一个UILabel
,但对于不同的iPhone,UILabel
的大小会发生变化,因为我使用了自动布局,但我无法固定字体大小,所以我的文本被截断了。
有没有办法设置约束条件,使文本可以动态地适应UILabel
?
我想要让我的文本适应一个UILabel
,但对于不同的iPhone,UILabel
的大小会发生变化,因为我使用了自动布局,但我无法固定字体大小,所以我的文本被截断了。
有没有办法设置约束条件,使文本可以动态地适应UILabel
?
你应该使用自动收缩。
由于所有的iPhone在竖屏模式下都有相同的紧凑宽度
大小类,因此您不能依赖它来处理您的标签尺寸。
预览适用于iPhone5、iPhone6和6+。
在检查器中,您必须在自动收缩前选择最小字体比例或最小字体大小。这将使内容可以更改字体大小以适应标签。
在这里,我将最小字体比例设置为0.5,因此最小尺寸是当前尺寸的一半(31.0)。文本将尝试适应,直到达到最小比例/大小。
(通常不要使用“紧缩字母间距”来达到此目的。 紧缩字母间距使用相同的字体大小并减少字母之间的间距。 它可以使标签变得更紧密,甚至可以减少5%的空间,但在启用最小字体比例/大小时效果不佳。)
您可能希望使用宽屏设备(例如iPad Pro)和小屏设备(例如iPhone 4S)进行测试。作为一种良好的实践,您应该使用不同的用户系统字体大小进行测试,您可以在设置
>通用
>辅助功能
>更大的文本
中设置它们。
自动收缩不会将字体大小调整为大于标签上设置的大小,这意味着如果您将标签的宽度设置为与屏幕相同但字体大小保持为14,则它将尝试增加字体大小直到达到该大小。
为使其实际起作用,请选择一个大字体大小。
您仍然可以将自动收缩与大小类结合使用,以根据设备/方向更改最大字体大小。
如果您希望在UIButton
上使用自动收缩,则仍然可以通过两行代码设置此行为。
myButton.titleLabel.minimumScaleFactor = 0.5;
myButton.titleLabel.adjustsFontSizeToFitWidth = YES;
UIButton
一起使用,一个按钮包含一个 UILabel
:). 只需设置您的 UIButton
的 titleLabel
autoshrink 属性即可。我已更新我的答案。 - Crazyrems