UILabel动态改变字体大小并保持位置?

时间:2017-07-06 14:59:33

标签: swift

我必须更改字体尺寸,当我这样做时:

  1. 将其置于同一位置
  2. 调整框架以适应。
  3. 当我做2号时,它不会保持居中:

       label.font = label.font.withSize(max*percentage)
      label.sizeToFit()
    

    如果我不这样做,我将不得不改变框架并找到它如何动态地适应字体。 有2行的优雅方式吗?

2 个答案:

答案 0 :(得分:1)

如果要为标签保留相同的中心,则必须先定义一个中心。您可以创建UIView,然后将标签置于视图中心,然后将clipToBounds设置为false。在这种情况下,您的标签在视图中居中。

UIView实际上可以是任何东西。您只需要约束来告诉swift您的标签与某些内容相关,在更新框架时,将其保持居中。这是一个标签以我的视图控制器为中心的示例

enter image description here

我有时间每秒增加字体大小

func timerDidFire(timer: Timer) {
    size += 5
    label.font = label.font.withSize(CGFloat(size))
    label.sizeToFit()
}

模拟器结果是

enter image description here

答案 1 :(得分:0)

结束这样做:

let center:CGPoint=editedView.center // first take the center
label.font = label.font.withSize(max*percentage)
label.sizeToFit() // set right size
label.center=center //then set it back