所以我目前在应用程序的左侧打开和关闭菜单栏,我想在打开菜单时在导航栏 Headers 上显示某个图像 . 下面是我打开和关闭菜单的功能 .
@IBAction func openMenu(_ sender: Any) {
if (menuShowing) {
self.navigationController?.navigationBar.barTintColor = UIColor(red:0.00, green:0.20, blue:0.63, alpha:1.0)
navigationItem.leftBarButtonItem?.tintColor = UIColor.white
navigationItem.titleView = ""
leadingConstraint.constant = -240
shadowLeadingConstraint.constant = -250
UIView.animate(withDuration: 0.6, animations: {
self.view.layoutIfNeeded()
})
}
else {
self.navigationController?.navigationBar.barTintColor = UIColor.white
navigationItem.leftBarButtonItem?.tintColor = UIColor(red:0.00, green:0.20, blue:0.63, alpha:1.0)
let image = UIImage(named: "MenuBarTransparent")
navigationItem.titleView = UIImageView(image: image)
navigationItem.titleView?.frame=CGRect(x:10, y:0, width:30, height:360)
leadingConstraint.constant = 0
shadowLeadingConstraint.constant = 0
UIView.animate(withDuration: 0.3, animations: {
self.view.layoutIfNeeded()
})
}
menuShowing = !menuShowing
}
上述函数中的这部分代码会在我想要的时候显示图像,但是操纵x和y坐标没有任何效果,因此我无法正确居中图像:
let image = UIImage(named: "MenuBarTransparent")
navigationItem.titleView = UIImageView(image: image)
navigationItem.titleView?.frame=CGRect(x:10, y:0, width:30, height:360)
此外,每当我再次关闭菜单时,上面的这部分代码都不允许我从导航栏 Headers 中删除图像,它说“无法指定类型'String'的值来键入'UIView?':
navigationItem.titleView = ""
在此先感谢您的帮助 .
2 回答
您正在为 Headers 视图指定一个字符串 . 而不是
navigationItem.titleView = ""
,我认为你应该使用navigationItem.titleView = nil
.以下是使用init设置对象的方法 .
navigationItem.titleView = UIImageView.init(image:UIImage(named:“image”))