首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使UILabel自动调整字体大小以适应屏幕宽度,但不调整为文本长度

使UILabel自动调整字体大小以适应屏幕宽度,但不调整为文本长度
EN

Stack Overflow用户
提问于 2019-11-18 23:25:22
回答 1查看 26关注 0票数 0

在一个非常简单的单屏幕应用程序中,我有一个从屏幕左边缘到右边缘的单行UILabel。标签的文本在运行时动态更新。文本的长度是不同的,因为它包含一个范围在0...100之间的数字,并且我既不使用等宽字体,也不使用前导零。

下面是一个插图:

代码语言:javascript
复制
    |<--------- Screen width --------------->|

    |<----- UILabel "Some value = 0" ------->|

    |<----- UILabel "Some value = 50" ------>|

    |<----- UILabel "Some value = 100" ----->|

我希望标签总是使用任何设备的最大宽度(即屏幕尺寸)。这可以通过使用自动布局、适当的前导和尾随约束、大字体和标签的“自动收缩”属性来实现。

问题是,这种方法将使字体大小也根据显示的值而变化,这不是我想要的。它应该只随屏幕的宽度变化,而不随标签文本的长度变化。

在上面的示例中,值0使用大字体,50使用中字体,100使用小字体。我希望它调整到最坏的情况(100),并在之后对任何文本使用结果大小。

是否可以仅使用Interface-Builder属性和自动布局约束来实现此目的?

我可以想出如何在代码中计算大小的方法,但我认为肯定有更简单的方法。

EN

回答 1

Stack Overflow用户

发布于 2019-11-19 23:29:27

在界面生成器中,您不能将字体大小表示为视图宽度的比例,但您可以在代码中很容易地做到这一点:

代码语言:javascript
复制
  override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    let textSize = Constant.baseFontSize * bounds.size.width / Constant.baseViewWidth
    label.font = .systemFont(ofSize: textSize)
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58917863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档