gpt4 book ai didi

iOS Swift 标签框架高度未正确更新

转载 作者:搜寻专家 更新时间:2023-10-31 22:06:49 27 4
gpt4 key购买 nike

我有一个标签,每次用户单击一个按钮时,其文本都会发生变化。但是,即使标签内容已更改,Label.frame.height 值也不会立即更新。更改标签的函数在多个地方被调用,但高度仅在@IBAction block 内更新,并且其值滞后一次点击周期。我的代码如下:

func changeLabelText() {
//Here I have an algorithm (not shown) that generates myMutableString
Label.attributedText = myMutableString //Label is updated.
}


@IBAction func changeLabelButton(sender: UIButton) {
print("1. Height = ", Label.frame.height) //Height updates here, but it's the old value.
changeLabelText() //Label is updated.
print("2. Height = ", Label.frame.height) //Returns same height as Line 1!!
}


override func viewDidLoad() {
super.viewDidLoad()
print("3. Height = ", Label.frame.height) //Initially, height is 21.0 when ViewController first loads.
changeLabelText() //Label is updated.
print("4. Height = ", Label.frame.height) //Returns height = 21.0, even though simulator shows Label updated!!
}

总而言之,这就是正在发生的事情:

  1. 用户点击Button,Label显示新文字,但frame.height不变。

  2. 用户再次点击 Button,Label 文本再次更改,frame.height 这次更新,但更新为它在步骤 1 中应该具有的旧值。

我对 Swift 比较陌生,非常感谢任何帮助。

最佳答案

更改文本后立即调用这些方法

label.setNeedsLayout()
label.layoutIfNeeded()

这将为您提供正确的框架。

关于iOS Swift 标签框架高度未正确更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35542196/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com