2017-10-13 179 views
-3

我来到这里这样的错误:导航栏图片

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

什么是错我的代码?我尝试将图像添加到navcontroller,我可以在这里看到图像。

func addNavBarImage() { 
    let nc = navigationController! 
    let image = UIImage(named: "2.png") 
    let imageView = UIImageView(image: image) 

    let bwidth = nc.navigationBar.frame.size.width 
    let bheight = nc.navigationBar.frame.size.height 

    let bannerx = bwidth/2 - (image?.size.width)!/2 
    let bannery = bheight/2 - (image?.size.height)!/2 

    imageView.frame = CGRect(x: bannerx, y: bannery, width: bwidth, height: bheight) 
    imageView.contentMode = .scaleAspectFit 
    navigationItem.titleView = imageView 
} 
+0

究竟哪一行导致错误? – rmaddy

回答

0

当你没有必要一个合法的图像您收到此错误信息添加到您的let image = UIImage(named: "2000")。它是nil。您的代码在let bannerx = bwidth/2 - (image?.size.width)!/2上崩溃。确保您在该行之后继续执行之前拥有正确的映像。

替换:

let image = UIImage(named: "2.png") 

有了:

guard let image = UIImage(named: "2") else { return } 

这样做,你鸵鸟政策需要强制选择使用下面的行,因此更换以下行的bannerxbannery与你:

let bannerx = bwidth/2 - (image.size.width)/2 
let bannery = bheight/2 - (image.size.height)/2