当我向 navigationItem 添加更多按钮时,如何使我的 navigationItem.titleView 居中?
Posted
技术标签:
【中文标题】当我向 navigationItem 添加更多按钮时,如何使我的 navigationItem.titleView 居中?【英文标题】:How can I center my navigationItem.titleView when I add more buttons to the navigationItem? 【发布时间】:2018-06-19 23:57:41 【问题描述】:我正在做一个复制 Twitter 的 ios 应用程序的教程。
左边有一个BarButtonItem
,中间有一个ImageView
,右边有一个由两个BarButtonItems
组成的数组。如果数组仅填充一个按钮,则titleView
居中。如果我添加另一个按钮,titleView
会移动。
我知道问题在于titleView
的宽度,如最后的图片所示。
let titleImageView = UIImageView(image: #imageLiteral(resourceName: "title_icon"))
titleImageView.frame = CGRect(x: 0, y: 0, width: 24, height: 24)
titleImageView.contentMode = .scaleAspectFit
navigationItem.titleView = titleImageView
let followButton = UIButton(type: .system)
followButton.setImage(#imageLiteral(resourceName: "follow").withRenderingMode(.alwaysOriginal), for: .normal)
followButton.frame = CGRect(x: 0, y: 0, width: 24, height: 24)
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: followButton)
let searchButton = UIButton(type: .system)
searchButton.setImage(#imageLiteral(resourceName: "search").withRenderingMode(.alwaysOriginal), for: .normal)
searchButton.frame = CGRect(x: 0, y: 0, width: 24, height: 24)
let composeButton = UIButton(type: .system)
composeButton.setImage(#imageLiteral(resourceName: "compose").withRenderingMode(.alwaysOriginal), for: .normal)
composeButton.frame = CGRect(x: 0, y: 0, width: 24, height: 24)
// THIS IS THE PROBLEM
navigationItem.rightBarButtonItems = [UIBarButtonItem(customView: composeButton), UIBarButtonItem(customView: searchButton)]
navigationItem.rightBarButtonItems = [UIBarButtonItem(customView: composeButton)]
:
navigationItem.rightBarButtonItems = [UIBarButtonItem(customView: composeButton), UIBarButtonItem(customView: searchButton)]
:
谢谢!
【问题讨论】:
【参考方案1】:您可以在导航栏的左侧插入一个虚拟按钮以保持平衡。使按钮与 searchButton 大小相同并清除背景。
【讨论】:
我正在考虑这个问题。这不是浪费资源吗?还是资源分配如此微不足道而无关紧要? 如何尝试并检查它是否真的有效。尝试后考虑一下以上是关于当我向 navigationItem 添加更多按钮时,如何使我的 navigationItem.titleView 居中?的主要内容,如果未能解决你的问题,请参考以下文章
当 navigationItem.title 太长时后退按钮标题消失