在UINavigationController中设置图像时不显示图像

时间:2018-01-20 21:53:21

标签: ios swift uinavigationcontroller

我正在尝试构建一个分配给我的导航控制器(在我的故事板中)的Cocoa Touch类,以在导航栏的中心显示图像。应用程序构建但图像不显示,我无法弄清楚原因。

enter image description here

class NavBarImg: UINavigationController {


    required init(coder aDecoder: NSCoder){
        super.init(coder: aDecoder)!
        setupView()
    }

    func setupView(){
        if navigationController == nil {
            return
        }

        let image = #imageLiteral(resourceName: "BarTabsNavLogoWhite")
        let imageView = UIImageView(image: image)

        let bannerWidth = navigationBar.frame.size.width
        let bannerHeight = navigationBar.frame.size.height

        let bannerX = bannerWidth / 2 - image.size.width / 2
        let bannerY = bannerHeight / 2 - image.size.height / 2

        imageView.frame = CGRect(x: bannerX, y: bannerY, width: bannerWidth, height: bannerHeight)
        imageView.contentMode = .scaleAspectFit

        self.navigationItem.titleView = imageView  

    }
}

2 个答案:

答案 0 :(得分:0)

嗯,你只是在setupView中拨打prepareForInterfaceBuilder()(除非你有一些代码没有分享),这只是在故事板上预览。 要在运行应用程序时执行该操作,您还需要在init?(coder: NSCoder)

中调用它

答案 1 :(得分:0)

为UINavigationController创建一个cocoa触摸类>实现以下代码>将类分配给故事板中的导航控制器。

class NavControllerClass: UINavigationController {

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

}

func setupNavigationBar()
{
    let image = #imageLiteral(resourceName: "BarTabsNavLogoWhite")
    let imageView = UIImageView(image: image)
    imageView.frame = navigationBar.frame
    imageView.contentMode = .scaleAspectFit
    navigationBar.addSubview(imageView)
}

}