iPad Playground有不同的View.Frame

问题描述 投票:1回答:2

我试图用这段代码在iPad Playgrounds中展示这个简单的ViewController:

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
override func viewDidLoad() {
    super.viewDidLoad()
    setupViews()
}

func setupViews() {
    let view1 = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.width/2, height: 100))
    view1.backgroundColor = .red
    view.addSubview(view1)
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()

您可以看到,即使它为View1的框架显示view.frame.width / 2,视图仍然如下所示:

enter image description here

怎么了?谢谢。

swift xcode ipad swift-playground ipad-playgrounds
2个回答
1
投票

Here’s how to get it to work

这是我使用的解决方案。在Swift Playgrounds中,布局是在viewDidLayoutSubview方法中创建的,因此应在那里创建所有帧。


0
投票

初始化ViewController后,您可以设置首选大小:

import UIKit
import PlaygroundSupport

class VC: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        setupViews()
    }

    func setupViews() {
        let view1 = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.width/2, height: 100))
        view1.backgroundColor = .red
        view.addSubview(view1)
    }
}

let vc = VC()
vc.preferredContentSize = CGSize(width: 768, height: 1024)

PlaygroundPage.current.liveView = vc

Playground with preferredContentSize

Playground without preferredContentSize

© www.soinside.com 2019 - 2024. All rights reserved.