我正在关注Angela的ios11应用程序开发训练营。我在更新UIView的宽度时遇到问题。这是我正在使用的代码
@IBOutlet var progressBar: UIView!
progressBar.frame.size.width = (view.frame.size.width / 13) * CGFloat(questionNumber + 1)
宽度设置正确,但UI未更新。我已经搜索并找到了以下解决方案。
@IBOutlet weak var progressBarWidthConstraint: NSLayoutConstraint!
progressBarWidthConstraint.constant = (view.frame.size.width / 13) * CGFloat(questionNumber + 1)
为什么下面的代码工作,上面的代码不工作。我正在观看这个讲座链接
提前谢谢。
在viewDidload
中,它将采用故事板中给定的视图的初始宽度。
我们可以在viewDidAppear
中设置宽度
或
设置宽度后,在viewDidLoad
中添加view.setNeedsLayout() Or view.layoutIfNeeded()
。
如果您想重新绘制视图,只需要调用layoutIfNeeded
使用此方法可以强制视图立即更新其布局。使用"自动布局"时,布局引擎会根据需要更新视图的位置,以满足约束中的更改。使用接收消息的视图作为根视图,此方法从根开始布置视图子树。如果没有挂起的布局更新,则此方法将退出,而不修改布局或调用任何与布局相关的回调。