IPad Playground имеет другой вид. Рамка - PullRequest
1 голос
/ 19 марта 2019

Я пытаюсь показать этот простой ViewController на игровых площадках iPad с этим кодом:

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

Что не так? Спасибо.

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Here’s how to get it to work

Это решение, которое я использовал, заставило его работать.В Swift Playgrounds макет создается методом viewDidLayoutSubview, поэтому все кадры должны создаваться там.

0 голосов
/ 19 марта 2019

Вы можете установить предпочитаемый размер после запуска вашего 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

Игровая площадка с предпочтительным размером содержимого

Детская площадка без предпочтительного размера контента

...