如何在Swift游乐场中停止帧的大小变为1024x768

时间:2018-10-31 13:38:32

标签: ios swift swift-playground

UIViewController中主视图的框架变为1024x768。

起初,问题并不明显,但后来进行布局时,就变得很麻烦。 如何确保框架保持与.preferredContentSize设置的尺寸相同?

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {

    override open func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor.white
        self.view.frame //When run playground shows 1024x768
    }
}
let viewController = MyViewController()
viewController.preferredContentSize = CGSize(width: 375, height: 667) // set to different size


PlaygroundPage.current.liveView = viewController

1 个答案:

答案 0 :(得分:3)

自动布局尚未在viewDidAppear()中完成。

您可以在viewWillAppearviewDidLayoutSubviews中获得帧大小,这两个帧均被调用了多次-但最后一次调用具有正确的帧大小。 / p>

您也可以在viewDidAppear中获得它,但是对于您的需求而言可能太迟了。

一种常见的方法是创建一个保存初始大小的var,然后运行需要viewDidLayoutSubviews if 当前帧大小与保存的大小(以及更新保存的大小)不同。