Ios 如何以编程方式在Swift 3/Xcode中向导航栏标题添加/删除图像
因此,我目前在应用程序的左侧有一个打开和关闭的菜单栏,我希望当我打开菜单时,导航栏标题上会出现一个特定的图像。下面是我打开和关闭菜单的功能Ios 如何以编程方式在Swift 3/Xcode中向导航栏标题添加/删除图像,ios,swift,xcode,swift3,uiimage,Ios,Swift,Xcode,Swift3,Uiimage,因此,我目前在应用程序的左侧有一个打开和关闭的菜单栏,我希望当我打开菜单时,导航栏标题上会出现一个特定的图像。下面是我打开和关闭菜单的功能 @IBAction func openMenu(_ sender: Any) { if (menuShowing) { self.navigationController?.navigationBar.barTintColor = UIColor(red:0.00, green:0.20, blue:0.63, alpha:1.0)
@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)
此外,上面的这部分代码不允许我在再次关闭菜单时从导航栏标题中删除图像,它说“无法将'String'类型的值分配给'UIView'”:
navigationItem.titleView = ""
提前感谢您的帮助。以下是如何使用init设置对象
navigationItem.titleView=UIImageView.init(image:UIImage(名为:“image”))您正在为标题视图分配字符串。而不是
navigationItem.titleView=”“
,我认为您应该使用navigationItem.titleView=nil
啊!!完美的这实际上帮助我解决了两个问题,非常感谢!这使我的图像显示正确,但它几乎像我的x和y坐标以及宽度是固定的。我可以随心所欲地更改图像的高度,并且可以在更改图像时看到图像的更新,但是没有其他响应。您可以在init中将这些值重置为您想要的值,而不是在它被实例化之后