swift 中的垂直标签栏导航
Vertical tab bar navigation in swift
有没有办法在垂直方向上重新定位 UIKit 标签栏?像
gmail app navigation
这个问题已经被问过很多次了。 None 我找到的解决方案似乎对我有用。我正在 Swift 中寻找从头开始的解决方案,没有第三方库。
就像@rmaddy 评论的那样,您需要创建一个自定义选项卡并将其放置在如下所示的视图中。
仅供参考,您可以使用按钮轻松构建自定义标签栏。
点击后,您只需使用下面的扩展程序将新控制器添加为子视图即可。
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)
}
}
所以从你的主视图控制器来看,它应该看起来像这样。
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)
}
}
希望对您有所帮助!
有没有办法在垂直方向上重新定位 UIKit 标签栏?像 gmail app navigation
这个问题已经被问过很多次了。 None 我找到的解决方案似乎对我有用。我正在 Swift 中寻找从头开始的解决方案,没有第三方库。
就像@rmaddy 评论的那样,您需要创建一个自定义选项卡并将其放置在如下所示的视图中。
仅供参考,您可以使用按钮轻松构建自定义标签栏。
点击后,您只需使用下面的扩展程序将新控制器添加为子视图即可。
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)
}
}
所以从你的主视图控制器来看,它应该看起来像这样。
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)
}
}
希望对您有所帮助!