Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode游乐场中的ViewController-帧报告双尺寸(viewDidLoad)_Ios_Xcode_Uiviewcontroller_Swift Playground_Viewdidload - Fatal编程技术网

Ios Xcode游乐场中的ViewController-帧报告双尺寸(viewDidLoad)

Ios Xcode游乐场中的ViewController-帧报告双尺寸(viewDidLoad),ios,xcode,uiviewcontroller,swift-playground,viewdidload,Ios,Xcode,Uiviewcontroller,Swift Playground,Viewdidload,我在Xcode中使用了UIViewController子类。控制器的视图显然报告为双倍大小。我是做错了什么,还是跌进了一只虫子 当我在视图中放置一半宽度的黄色子视图时,它覆盖了整个宽度 Xcode版本8.2.1(8C1002) 视图控制器的视图将使用自动布局调整大小。自动布局过程将在viewDidLoad之后发生。如果要通过引用视图控制器视图的框架来编程调整子视图的大小,则应将该代码移动到viewdilayoutsubviews。例如: class ViewController : UIView

我在Xcode中使用了
UIViewController
子类。控制器的视图显然报告为双倍大小。我是做错了什么,还是跌进了一只虫子

当我在视图中放置一半宽度的黄色子视图时,它覆盖了整个宽度

Xcode版本8.2.1(8C1002)


视图控制器的视图将使用自动布局调整大小。自动布局过程将在
viewDidLoad
之后发生。如果要通过引用视图控制器视图的
框架来编程调整子视图的大小,则应将该代码移动到
viewdilayoutsubviews
。例如:

class ViewController : UIViewController {
    let halfV = UIView()

    override func viewDidLoad() {
        title = "Double Frame"
        super.viewDidLoad()
        view.frame // inspecting the frame size: 768 x 1024


        halfV.backgroundColor = UIColor.yellow
        view.addSubview(halfV)
    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        halfV.frame = CGRect(x: 0, y: 200,
               width: CGFloat(view.frame.width / 2),
               height: CGFloat(view.frame.width / 2))
    }
}
PlaygroundPage.current.liveView = UINavigationController(rootViewController: ViewController())

调用
viewDidLoad
后,视图控制器的视图将在某个时间调整大小。您需要使用约束/自动调整遮罩大小/其他一些方法调整黄色的大小,这些方法将在superview调整大小时调整黄色的大小。
class ViewController : UIViewController {
    let halfV = UIView()

    override func viewDidLoad() {
        title = "Double Frame"
        super.viewDidLoad()
        view.frame // inspecting the frame size: 768 x 1024


        halfV.backgroundColor = UIColor.yellow
        view.addSubview(halfV)
    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        halfV.frame = CGRect(x: 0, y: 200,
               width: CGFloat(view.frame.width / 2),
               height: CGFloat(view.frame.width / 2))
    }
}
PlaygroundPage.current.liveView = UINavigationController(rootViewController: ViewController())