Search code examples
iosswiftuiviewcontrollerios9uitabcontroller

Swift View Layout below tabbar


class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    self.window?.backgroundColor = UIColor.whiteColor()
    self.window?.makeKeyAndVisible()

    let vc = ViewController()
    vc.tabBarItem = UITabBarItem(...)
    ...
    let tabbar = UITabBarController()
    tabbar.setViewControllers([...,vc,...], animated: false)

    self.window?.rootViewController = tabbar

    tabbar.selectedIndex = 2
    return true
   }
}
class ViewController: UIViewController {
    override func loadView() {
        super.loadView()
        self.view.backgroundColor = UIColor.yellowColor()
        //self.automaticallyAdjustsScrollViewInsets = false;
    }

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

    override func viewDidAppear(animated: Bool) {
         super.viewDidAppear(animated)
  }
}

I am not using a story board.

The above causes the ViewControllers view to extend below the tab bar. How can i stop this?

I've tried setting the views frame to

CGRectMake(0, 0, self.view.frame.width, self.view.frame.height - tabBarController.view.frame.height))

but that did not work.


Solution

  • You can use the edgesForExtendedLayout property of UIViewController to set which edges to extend under navigation bars. If you don't want any, you can simply say:

    self.edgesForExtendedLayout = .None