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