如何在iOS自动布局中动态更改字体大小?




xcode autolayout (2)

我希望将我的文本放在 UILabel ,但是对于不同的iPhone, UILabel 的大小正在改变,因为我使用的是自动布局,但我无法修复字体大小,所以我的文字正在删除。

有什么方法可以设置任何约束,以便文本动态地适应 UILabel

由于屏幕分辨率不同,请看这里的文字被剪切


你应该使用自动 收缩

由于所有iPhone在纵向模式下都具有相同的 Compact width 尺寸类别,因此您不能依赖它来处理标签尺寸。

预览适用于iPhone5,iPhone6和iPhone 6+

在检查器中,您必须在自动收缩前选择最小字体比例或最小字体大小。 这使内容能够更改字体的大小以适合标签。

在这里,我将最小字体比例设置为0.5,因此最小尺寸是当前尺寸的一半 (31.0) 。 文本将尝试适合,直到达到最小比例/大小。

(一般不要使用“收紧字母间距”。收紧字母间距使用相同的字体大小,减少字母之间的间距。它可以使标签在截断前最多缩小5%,但在最小字体比例时无效/大小已启用。)

您可能希望使用 iPad Pro 等宽屏设备进行测试,也可以使用较小的屏幕(如 iPhone 4S)进行测试

自动收缩不会调整字体大小大于标签上设置的字体大小,这意味着如果您使标签与屏幕的宽度相同但是将字体大小保留为 14 ,它将尝试增加字体大小,直到达到该大小。

要使其实际工作,请选择 较大的 字体大小。

您仍然可以将自动收缩与大小类组合,以根据设备/方向更改最大字体大小。

如果您想对 UIButton 使用自动 收缩 ,您仍然可以使用两行代码设置此行为。

myButton.titleLabel.minimumScaleFactor = 0.5;
myButton.titleLabel.adjustsFontSizeToFitWidth = YES;

嗨,如果您从故事板添加UILabel,您可以为所有可用的布局设置不同的字体。





autolayout