如何dynamic更改自动布局iOS中的字体大小?

我想适合我的文字在一个UILabel ,但对于不同的iPhone UILabel的大小正在改变,因为我使用自动布局,但我不能修复字体大小,所以我的文字被删除。

有什么办法可以设置任何约束,以便文本dynamic适应UILabel

由于不同的屏幕分辨率,在这里看到的文字被削减

你应该使用自动收缩

由于所有iPhone在纵向模式下都具有相同的Compact width尺寸,所以不能依靠这个来处理标签尺寸。


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

在这里输入图像说明

在检查员中,您必须在Autoshrink前面select最小字体比例或最小字体大小。 这使内容能够改变字体的大小以适应标签。

在这里,我将最小字体大小设置为0,5,所以最小大小是当前大小的一半(31.0) 。 文本将尝试调整,直到达到最小的比例/大小。

(一般不要使用“拧紧字母间距”,拧紧字母间距使用相同的字体大小,缩小字母之间的间距,截断前可以将标签的大小从2%缩小到5%,但最小字体大小/大小已启用。)


您可能需要使用iPad Pro等宽屏设备进行testing,也可以在iPhone 4S等较小的屏幕上进行testing。

Autoshrink将不会调整比标签上设置的字体大的字体,这意味着如果您将标签设置为与屏幕相同的宽度,但将字体大小设置为14 ,则会尝试增加字体大小,直到达到该大小。

为了使其实际工作,select一个大的字体大小。

您仍然可以将autoshrink与大小类别结合使用,以根据设备/方向更改最大字体大小。


如果你想使用UIButtonautoshrink ,你仍然可以用两行代码来设置这个行为。

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

你可以通过使用大小类来做到这一点。 每个显示尺寸使用一个尺寸等级,这将导致四个抽象设备:规则宽度 – 规则高度,规则宽度 – 紧凑高度,紧凑宽度 – 规则高度和紧凑宽度 – 紧凑高度。 下表显示了iOS设备及其相应的大小类别。  在这里输入图像说明

要设置这个特定大小的字体大小,首先selectUILabel 。 在“属性”检查器下,您应该在字体字段旁边看到一个加号(+)button。 单击+button并select紧凑宽度>常规高度(或根据您的要求select宽度和高度)。 然后,您将看到一个新的字体选项条目,专用于该特定的大小类。 保持原始字体选项的大小不变,但将wC hR(或根据您的select)字体字段的大小更改为所需的点(例如14)。

在这里输入图像说明

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

在这里输入图像说明