这是布局我的视图控制器的好方法吗

时间:2018-08-25 13:35:45

标签: ios swift

人们通常在viewDidAppear()viewDidLayoutSubviews()中获得实际的帧大小来计算他们的视图,但是我通常会遇到这些方法的问题。

我希望在视图出现在屏幕上之前已经计算出视图,因此viewDidAppear()不适合,viewWillAppear()有时可行,有时则不可行。 viewDidLayoutSubviews()被调用了很多次,所以也不是一个好选择。

因此,下面是我的处理方法,通过这种方法,我始终可以获得预期的结果。这有什么缺点吗?

override func viewDidLoad() {
    super.viewDidLoad()

    self.view.frame = UIScreen.main.bounds
    self.view.layoutIfNeeded()
    // put everything needs to be calculated here
}

3 个答案:

答案 0 :(得分:0)

您不需要那样布置视图。

现代的Apple建议是避免对框架进行手动更改。

答案 1 :(得分:0)

layoutIfNeeded

来自文档:Lays out the subviews immediately, if layout updates are pending.

这是一个同步调用,它告诉系统您希望对视图及其子视图进行布局和重绘,并且希望立即完成而不等待更新周期。

https://developer.apple.com/documentation/uikit/uiview/1622507-layoutifneeded

您还应该在今年观看此WWDC视频 https://developer.apple.com/videos/play/wwdc2018/220/

答案 2 :(得分:0)

将代码放入viewLayoutSubViews dwlwgate方法。