// // HomeViewController.swift // UPlab_MVC // // Created by Ernest.lee on 17/10/2019. // Copyright © 2019 Ernest.lee. All rights reserved. // import UIKit import SceneKit public extension UIView { enum ViewSide { case Left, Right, Top, Bottom } func addBorder(toSide side: ViewSide, withColor color: CGColor, andThickness thickness: CGFloat) { let border = CALayer() border.backgroundColor = color switch side { case .Left: border.frame = CGRect(x: frame.minX, y: frame.minY, width: thickness, height: frame.height); break case .Right: border.frame = CGRect(x: frame.maxX, y: frame.minY, width: thickness, height: frame.height); break case .Top: border.frame = CGRect(x: frame.minX, y: frame.minY, width: frame.width, height: thickness); break case .Bottom: border.frame = CGRect(x: frame.minX, y: frame.maxY, width: frame.width, height: thickness); break } layer.addSublayer(border) } func anchor(top: NSLayoutYAxisAnchor?, left: NSLayoutXAxisAnchor?, bottom: NSLayoutYAxisAnchor?, right: NSLayoutXAxisAnchor?, paddingTop: CGFloat, paddingLeft: CGFloat, paddingBottom: CGFloat, paddingRight: CGFloat, width: CGFloat, height: CGFloat, enableInsets: Bool) { var topInset = CGFloat(0) var bottomInset = CGFloat(0) if #available(iOS 11, *), enableInsets { let insets = self.safeAreaInsets topInset = insets.top bottomInset = insets.bottom } translatesAutoresizingMaskIntoConstraints = false if let top = top { self.topAnchor.constraint(equalTo: top, constant: paddingTop+topInset).isActive = true } if let left = left { self.leftAnchor.constraint(equalTo: left, constant: paddingLeft).isActive = true } if let right = right { rightAnchor.constraint(equalTo: right, constant: -paddingRight).isActive = true } if let bottom = bottom { bottomAnchor.constraint(equalTo: bottom, constant: -paddingBottom-bottomInset).isActive = true } if height != 0 { heightAnchor.constraint(equalToConstant: height).isActive = true } if width != 0 { widthAnchor.constraint(equalToConstant: width).isActive = true } } } /* HomeVC is the main controller, it is responsible for Nav bar control and setting up childVC */ class HomeController: UIViewController{ //MARK: Properties let mapVC: GameViewController = GameViewController() //MARK: Init override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .gray setUpVC() setUpNavBar() setConstraints() } func setUpVC(){ //Map VC addChild(mapVC) // if let frame = nil { // mapVC.view.frame = frame // } view.addSubview(mapVC.view) mapVC.didMove(toParent: self) } func setConstraints(){ /* mapVC.view.anchor(top: nil, left: nil, bottom: nil, right: nil, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0, enableInsets: false) if #available(iOS 11.0, *) { mapVC.view.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true } mapVC.view.addBorder(toSide: .Left, withColor: UIColor.black.cgColor, andThickness: 1.0) */ } } extension HomeController { func setUpNavBar(){ navigationController?.navigationBar.barTintColor = .white navigationController?.navigationBar.isTranslucent = true navigationController?.navigationBar.backgroundColor = .white let threeButton = UIBarButtonItem(image: #imageLiteral(resourceName: "Image").withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(handleThree)) navigationItem.leftBarButtonItems = [threeButton] } //MARK: - Nav Bar Handler @objc func handleThree(){ //delegate?.handleThreeToggle() } }