Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to setup ViewController in Playgrounds?

In swift playgrounds how do you setup a viewcontroller and use it? I've done it with a UIView before but the UI gets cut when in a difference orientation so I want to try use a viewcontroller. I've got let view = UIViewController() but after that how do I set it up to add a background and stuff on it?

like image 353
David Williamson Avatar asked Apr 01 '17 18:04

David Williamson


2 Answers

To create a view controller in a Swift playground you need this code:

import UIKit
import PlaygroundSupport

class ViewController: UIViewController{
    override func viewDidLoad() {
        super.viewDidLoad()
        // do setup here
    }        
}

let viewController = ViewController()
PlaygroundPage.current.liveView = viewController
PlaygroundPage.current.needsIndefiniteExecution = true
like image 103
David Williamson Avatar answered Oct 20 '22 01:10

David Williamson


Example of UIViewController in Playground with multiple Subviews and Auto layout.

import UIKit
import PlaygroundSupport

class ViewController : UIViewController {

    var yellowView: UIView!
    var redView: UIView!

    override func loadView() {

        // UI

        let view = UIView()
        view.backgroundColor = .white

        yellowView = UIView()
        yellowView.backgroundColor = .yellow
        view.addSubview(yellowView)

        redView = UIView()
        redView.backgroundColor = .red
        view.addSubview(redView)

        // Layout
        redView.translatesAutoresizingMaskIntoConstraints = false
        yellowView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            yellowView.topAnchor.constraint(equalTo: view.topAnchor, constant: 20),
            yellowView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
            yellowView.widthAnchor.constraint(equalToConstant: 80),
            yellowView.heightAnchor.constraint(equalToConstant: 80),

            redView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -20),
            redView.trailingAnchor.constraint(equalTo: view.trailingAnchor,constant: -20),
            redView.widthAnchor.constraint(equalToConstant: 80),
            redView.heightAnchor.constraint(equalToConstant: 80)
            ])

        self.view = view
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

PlaygroundPage.current.liveView = ViewController()

enter image description here

like image 44
Rizwan Mehboob Avatar answered Oct 20 '22 01:10

Rizwan Mehboob