我想在导航栏的右侧显示BarButtomItem。
这就是我所做的:
let imageSearch = UIImage(named: "search")?.withRenderingMode(.alwaysOriginal)
let searchBarButtonItem = UIBarButtonItem(image: imageSearch, style: .plain, target: self, action: #selector(handleSearch))
searchBarButtonItem.width = 20
navigationItem.rightBarButtonItem = searchBarButtonItem
当我运行应用程序时,“条形按钮”项位于中间,而不是我想要的右侧。
我也尝试过:
navigationItem.setRightBarButton(searchBarButtonItem, animated: true)
但这并不能解决问题。
编辑:
我没有在情节提要中使用程序,所以在场景委托中以编程方式添加了NavigationController
最佳答案
根据我的经验,您已经遇到了这个问题,因为您为所有resolution 1X, 2X and 3X
添加了大尺寸图像。你需要
将其缩小到更适合导航栏的大小。
解决方案:1
您需要将其缩小到更适合导航栏的大小。请查看UINavigationBar
的图片大小
对于1X图像尺寸:24X24
对于2X图像大小:48X48
对于3X图像大小:72X72
解决方案:2
如果要使用相同的图像,则需要在代码中进行以下更改。
您只需要在UIImageView
中添加UIView
,然后进行所有操作
如预期般运作。
码:
let containerView = UIControl(frame: CGRect.init(x: 0, y: 0, width: 30, height: 30))
containerView.addTarget(self, action: #selector(handleSearch), for: .touchUpInside)
let imageSearch = UIImageView(frame: CGRect.init(x: 0, y: 0, width: 30, height: 30))
imageSearch.image = UIImage(named: "search")
containerView.addSubview(imageSearch)
let searchBarButtonItem = UIBarButtonItem(customView: containerView)
searchBarButtonItem.width = 20
navigationItem.rightBarButtonItem = searchBarButtonItem