【问题标题】:Font Sizing Per Device Programmatically以编程方式调整每个设备的字体大小
【发布时间】:2019-01-10 14:34:36
【问题描述】:

我正在尝试更改 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

【问题讨论】:

    标签: swift uilabel uifont


    【解决方案1】:

    在第一次模拟时,它比第三次要小。

    不,不是。看起来是这样的,因为 iPhone 5S 的屏幕(640x1136 点)比 iPhone Xs(1125x2436)的屏幕小。此外,文本在其背景下看起来很小,因为背景具有固定的约束,导致其在所有设备上调整大小。

    为了使您的文本在所有屏幕上的背景看起来都相似,您必须将UILabel 的顶部、前导、底部和尾部约束设置为等于 superview 的(使用自定义常量)

    ...然后像你​​一样,为你的标签设置minimumScaleFactor

    所以,如果您将字体大小设置为20,那么最大字体大小将为20。如果您的标签应该更小(有由于您设置的限制,空间不足),您的标签将具有您设置为最小比例因子的最大可能字体大小。

    【讨论】:

    • 我不希望标签文本在 iPhone XR 上看起来像普通文本,在 iPhone 5s 上看起来像 MASSIVE。对此最合适的操作是什么?或者这是正常的吗?
    • @impression7vx 如果您只是将标签的框架设置为按钮的边界,则没有任何东西会限制您的标签,因此它的文本将具有您设置的大小。您必须按照我在回答中的说明设置其约束,以限制标签大小,然后是文本的字体大小。
    • 我如何知道正确的约束,以使每个设备的字体看起来都相同?
    • @impression7vx 您必须知道标签和超级视图(在您的案例按钮中)之间需要什么“间距”。如果你想有 5 个点的“间距”,请将约束常数设置为 5...
    • 我会玩这个。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多