ios - 如何从中心位置为所有 View Controller 在导航栏中设置 Logo

标签 ios swift

如何从中心位置为所有 View Controller 的导航栏中设置 Logo ? 我的意思是,我不想在每个 View Controller (viewDidLoad())方法的代码中设置 Logo 。 有没有一个好的地方可以放置它,例如 Appdelegate 或每次屏幕更改后触发的事件? 我将下面的代码放在 Appdelegate 中,但仅适用于初始屏幕。谢谢。

    let img = UIImageView(image: UIImage(named: "Tourney"))
    img.contentMode = .scaleAspectFit

    let logo =  UIBarButtonItem(customView: img)

    let root = window?.rootViewController!
    root?.childViewControllers[0].childViewControllers[0].navigationItem.rightBarButtonItem = logo

最佳答案

扩展 UIViewController 并添加方法 setupNavigationBar 用于设置导航中心图像。

extension UIViewController { 
    func setupNavigationBar(image: UIImage) {
        //set your image navigation bar center
        //set titile
        //self.navigationItem.title =  title 
        //set image in the center 
         self.navigationItem.titleView = UIImageView(image: image)
    }
}

现在setupNavigationBar所有viewcontroller并尝试以这种方式调用

 override func viewDidLoad() {
        super.viewDidLoad()
         self.setupNavigationBar(image: UIImage(named: "Tourney"))
}

关于ios - 如何从中心位置为所有 View Controller 在导航栏中设置 Logo ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45312853/

相关文章:

ios - 如何知道外部键盘是否在 iOS 中处于事件状态

arrays - 使用正则表达式拆分以特定字符开头和结尾的组

ios - 应用程序因 self.tableView.deleteRows 崩溃(在 : [indexPath], 处,: . 淡入淡出)

iphone - iOS : SA_OAuthTwitterController callback after authorization

ios - 用于输入和输出的不同摄像机 session 预设

ios - 关于 iOS 10 后台运行 Timer 的问题

ios - 快速初始化带有标签标题的按钮

ios - 给定电话号码,如何在 iOS 中调用电话?

ios - 更改嵌入在 iOS 5 上的 UIViewController 中的 UITableView 的背景

ios - didRotateFromInterfaceOrientation 在 iOS 8 中被弃用