Swift 4中如何为导航栏按钮设置背景图?类型转换报错求助
解决Swift 4中导航栏按钮设置背景图的类型转换错误
嘿,我来帮你搞定这个报错!你遇到的问题是因为代码里创建UIImage的方式完全不对,导致Swift无法识别你要传入的图片实例。
错误原因分析
你写的UIImage?: welcome.png是完全错误的语法:
UIImage?是可选UIImage类型的名称,而方法需要的是这个类型的实例对象- 你不能直接用
?:这种写法来引用图片文件,必须通过UIImage的构造方法来创建实例
修正后的代码
正确的写法应该是使用UIImage(named:)方法来加载图片,这个方法会返回一个UIImage?(找不到图片时返回nil),刚好符合方法的参数要求:
btn.setBackgroundImage(UIImage(named: "welcome.png"), for: .normal, barMetrics: .default)
额外注意事项
- 如果你的图片是放在
Assets.xcassets资源目录里,可以省略文件扩展名,直接写文件名:UIImage(named: "welcome") - 确保图片文件已经添加到你的Xcode项目中,并且勾选了对应的Target Membership(否则App运行时找不到图片)
- 文件名的拼写和大小写要完全匹配,iOS系统是区分文件名大小写的
内容的提问来源于stack exchange,提问作者Zouhair Sassi




