Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使UILabel自动将字体大小调整为屏幕宽度,而不是文本长度_Ios_Xcode_Autolayout_Interface Builder - Fatal编程技术网

Ios 使UILabel自动将字体大小调整为屏幕宽度,而不是文本长度

Ios 使UILabel自动将字体大小调整为屏幕宽度,而不是文本长度,ios,xcode,autolayout,interface-builder,Ios,Xcode,Autolayout,Interface Builder,在一个非常简单的单屏幕应用程序中,我有一个从屏幕左边缘到右边缘的单行UILabel。 标签的文本在运行时动态更新。文本的长度各不相同,因为它包含一个范围为0…100的数字,我既不使用单间距字体,也不使用前导零 下面是一个例子: |<--------- Screen width --------------->| |<----- UILabel "Some value = 0" ------->| |<----- UILabel "Some

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

下面是一个例子:

    |<--------- Screen width --------------->|

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

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

    |<----- UILabel "Some value = 100" ----->|
||
||
||
||
我希望标签始终使用任何设备的最大宽度(即屏幕大小)。这可以通过使用自动布局、适当的前导和尾随约束、大字体和标签的“自动收缩”属性来实现

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

在上面的示例中,大字体大小将用于值0,中字体大小将用于值50,小字体大小将用于值100。我想让它调整到最坏的情况(100),并使用任何文本后产生的大小

是否可以仅使用界面生成器属性和自动布局约束来实现这一点


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

在interface builder中不能将字体大小表示为视图宽度的一部分,但在代码中可以很容易地做到:

  override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    let textSize = Constant.baseFontSize * bounds.size.width / Constant.baseViewWidth
    label.font = .systemFont(ofSize: textSize)
  }