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

Mun*_*eik 31 xcode ios autolayout

我想把我的文字放在一个UILabel,但对于不同的iPhone,其大小UILabel正在改变,因为我正在使用自动布局,但我无法修复字体大小,所以我的文字正在删除.

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

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

Cra*_*ems 62

你应该使用自动收缩.

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


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

在此输入图像描述

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

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

(一般不要用"拧紧字母间距"为了这个目的.拧紧字母间距使用相同的字体大小,并减少字母之间的间距.它可以使标签了更严格的5%截断之前,但它不是有效的,当最小字体放大/大小已启用.)


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

自动收缩不会调整字体大小比标签上的一组更大,这意味着如果你把标签宽度相同的屏幕,但离开字体大小为14,它会尝试增加字体大小,直到它达到大小.

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

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


如果您想使用自动收缩功能Settings,您仍然可以使用两行代码设置此行为.

myButton.titleLabel.minimumScaleFactor = 0.5;
myButton.titleLabel.adjustsFontSizeToFitWidth = YES;
Run Code Online (Sandbox Code Playgroud)


Mob*_*ert 7

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

在此输入图像描述


Mad*_*pta 6

您可以使用大小类来完成此操作.每个显示尺寸使用尺寸等级,这将产生四个抽象装置:常规宽度 - 常规高度,常规宽度 - 紧凑高度,紧凑宽度 - 常规高度和紧凑宽度 - 紧凑高度.下表显示了iOS设备及其相应的大小类. 在此输入图像描述

要设置此特定大小类的字体大小,请先选择UILabel.在"属性"检查器下,您应该在字体字段旁边看到加号(+)按钮.单击+按钮并选择紧凑宽度>常规高度(或根据您的要求选择宽度和高度).然后,您将看到Font选项的新条目,该条目专用于该特定大小类.保持原始Font选项的大小不变,但将wC hR(根据您选择的OR)字体字段的大小更改为所需的点(例如14).

在此输入图像描述