简体   繁体   中英

Vertical tab bar navigation in swift

Is there a way to reposition the UIKit tab bar vertically? Like the gmail app navigation

This question has been asked quite a few times. None of the solutions I found seem to work for me. I'm looking for a solution from scratch in Swift, no third party libs.

Just like what @rmaddy has commented, you will need to create a customised tab and place it in a view as shown below.

FYI, you can easily build a customised tab bar by using buttons.

在此处输入图片说明

Once clicked, you just need to add the new controller as a subview by using the extension below.

extension UIViewController {

    func add(parentViewController: UIView, childViewController: UIViewController) {
        // Add Child View Controller
        addChild(childViewController)

        // Add Child View as Subview
        parentViewController.addSubview(childViewController.view)

        // Configure Child View
        childViewController.view.frame = parentViewController.bounds

        // Notify Child View Controller
        childViewController.didMove(toParent: self)
    }

}

So from your main view controller, it should look something like this.

class MainController: UIViewController {

    // Outlets
    @IBOutlet weak var mainView: UIView!

    // Lazy loaded controller
    private lazy var tab1Controller: Tab1Controller = {
        // Instantiate View Controller
        let tab1Controller = UIStoryboard(name: "Tab1Controller", bundle: nil).instantiateViewController(withIdentifier: "Tab1") as! Tab1Controller

        return tab1Controller
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    // MARK: - Tab Bar

    @IBAction func Tab1TouchUpInside(_ sender: Any) {
        // Navigate to child view
        self.add(parentViewController: self.mainView, childViewController: self.tab1Controller)
    }

}

Hope it helps!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM