使用导航栏或创建自定义类将自定义工具栏快速添加到每个视图中?

时间:2019-05-18 14:32:49

标签: ios swift uitoolbar

我希望将一个工具栏添加到我的应用程序的每个视图,该视图非常基本,看起来像这样: enter image description here

注意:每个视图中的左右项目都相同。

我想知道最好是在每个viewcontroller中自定义导航栏,还是创建一个扩展UIToolBar并将其添加到每个控制器的类。什么是更好的做法?

1 个答案:

答案 0 :(得分:2)

根据我的说法,您应该创建UIViewController的扩展。它会有一个方法,其中包含修改该视图控制器的导航栏的代码。这样,您可以修改所需屏幕的导航栏,这将是非常灵活的设计方式。

例如,下面的扩展程序会将导航栏设置为透明,

extension UIViewController {

func setTransparentNavBar(_ target: UIViewController, leftAcion: Selector, rightAction: Selector) {
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.isTranslucent = true

    self.navigationItem.titleView = UIImageView(image: UIImage(named: "icon_2"))

    let leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_1"), style: UIBarButtonItem.Style.plain, target: target, action: leftAcion)
    //self.navigationItem.setLeftBarButton(leftBarButtonItem, animated: true)
    self.navigationItem.leftBarButtonItem = leftBarButtonItem

    let rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_3"), style: UIBarButtonItem.Style.plain, target: target, action: rightAction)
    //self.navigationItem.setRightBarButton(rightBarButtonItem, animated: true)
    self.navigationItem.rightBarButtonItem = rightBarButtonItem
}

}

每当需要此配置时,请在viewDidLoad()中调用此方法

希望这会有所帮助。