当我向 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 添加按钮

向NavigationItem添加按钮

当 navigationItem.title 太长时后退按钮标题消失

导航栏未填充 - iOS7

self.navigationItem.rightBarButtonItem = 按钮不起作用?

当我向下滚动表格视图时,隐藏单元格的复选标记消失了