以编程方式调整每个设备的字体大小
Font Sizing Per Device Programmatically
我正在尝试更改 UILabel
的文本,使每个设备的文本看起来完全相同。
在这里,我有 4 个不同的模拟器:按顺序 8Plus, 7, 5s, XR
。如您所见,文本看起来不同。在第一个模拟中,它比第三个小。我怎样才能使它在每个设备上缩放并看起来相同,即文本符合框的大小?
let label = UILabel(frame: button.bounds)
label.text = "Done"
label.minimumScaleFactor = 0.2
label.textAlignment = .center
label.textColor = .white
label.font = UIFont(name: label.font.fontName, size: 20)
label.adjustsFontSizeToFitWidth = true
label.isUserInteractionEnabled = true
On the first simulation, it's smaller than say the 3rd one.
不,不是。看起来是这样,因为 iPhone 5S(640x1136 点)的屏幕比 iPhone Xs(1125x2436)的屏幕小。此外,文本在其背景下看起来很小,因为背景有固定的限制,导致其在所有设备上调整大小。
为了让您的文本在所有屏幕上的背景看起来都相似,您必须将 UILabel
的顶部、前导、底部和尾部约束设置为与超级视图的相同(使用自定义常量)
...然后像你一样,为你的标签设置minimumScaleFactor
因此,如果您将 字体大小 设置为 20,则 最大 字体大小将为 20。如果您的标签 应该更小 (由于您设置的限制,space 不够),您的标签将具有您设置的 最大可能的 字体大小作为最小比例因子。
我正在尝试更改 UILabel
的文本,使每个设备的文本看起来完全相同。
在这里,我有 4 个不同的模拟器:按顺序 8Plus, 7, 5s, XR
。如您所见,文本看起来不同。在第一个模拟中,它比第三个小。我怎样才能使它在每个设备上缩放并看起来相同,即文本符合框的大小?
let label = UILabel(frame: button.bounds)
label.text = "Done"
label.minimumScaleFactor = 0.2
label.textAlignment = .center
label.textColor = .white
label.font = UIFont(name: label.font.fontName, size: 20)
label.adjustsFontSizeToFitWidth = true
label.isUserInteractionEnabled = true
On the first simulation, it's smaller than say the 3rd one.
不,不是。看起来是这样,因为 iPhone 5S(640x1136 点)的屏幕比 iPhone Xs(1125x2436)的屏幕小。此外,文本在其背景下看起来很小,因为背景有固定的限制,导致其在所有设备上调整大小。
为了让您的文本在所有屏幕上的背景看起来都相似,您必须将 UILabel
的顶部、前导、底部和尾部约束设置为与超级视图的相同(使用自定义常量)
...然后像你一样,为你的标签设置minimumScaleFactor
因此,如果您将 字体大小 设置为 20,则 最大 字体大小将为 20。如果您的标签 应该更小 (由于您设置的限制,space 不够),您的标签将具有您设置的 最大可能的 字体大小作为最小比例因子。