微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以在Swift中制作大rightBarButtonItem吗?

如何解决我可以在Swift中制作大rightBarButtonItem吗?

我所拥有的:

enter image description here

self.title = "Title"
navigationController?.navigationBar.prefersLargeTitles = true
self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add",style: .plain,target: self,action: #selector(addTapped))
navigationItem.rightBarButtonItem?.tintColor = .white

是否可以使这个Add看起来完全像这个Title
像这样的东西:

enter image description here

或其他任何解决方案-标题左-图像右侧的按钮,高度相同?

解决方法

请仔细回答this,该问题显示了如何折叠和变大时管理导航栏标题。它不会给您确切的答案,但绝对可以帮助您实现所需的目标。

否则,请通过this答案,这将帮助您了解如何将x,y位置赋予右栏按钮项。

快速概述一下如何结合这两个答案来实现所需的目标:-

  1. 根据您要执行的导航栏的位置或高度,设置右栏按钮项的位置。链接2会帮助您做到这一点。
  2. 增大或减小导航栏的高度时,请观察导航栏,您可以更改右栏按钮项的位置。

完成。通过使用此功能,您可以在同时放大导航栏时在两个位置管理栏按钮项的位置,而在导航栏合拢时可以在不同位置显示按钮,以便在导航栏放大时更改按钮位置后,您的问题反之亦然。

,

我已经在我的应用中完成了类似的操作-并非完全符合您的期望,但应该给您足够的帮助:

    func setupNavBar() {
    let rightButton = UIButton()
    rightButton.setTitle("Leave",for: .normal)
    rightButton.addTarget(self,action: #selector(rightButtonTapped(button:)),for: .touchUpInside)
    navigationController?.navigationBar.addSubview(rightButton)
    rightButton.tag = 97
    rightButton.frame = CGRect(x: self.view.frame.width,y: 0,width: 120,height: 20)

    let targetView = self.navigationController?.navigationBar
    let trailingConstraint = NSLayoutConstraint(item: rightButton,attribute:
        .trailingMargin,relatedBy: .equal,toItem: targetView,attribute: .trailingMargin,multiplier: 1.0,constant: -16)
    let bottomConstraint = NSLayoutConstraint(item: rightButton,attribute: .bottom,constant: -6)
    rightButton.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.activate([trailingConstraint,bottomConstraint])
    }

Custom Right Button

我还创建了此功能以将其删除(因此在上面使用了标签):

    func removeRightButton(){
        guard let subviews = self.navigationController?.navigationBar.subviews else{
            log.info("Attempt to remove right button but subviews don't exist")
            return
        }
        for view in subviews{
            if view.tag == 97 {
                view.removeFromSuperview()
            }
        }
    }
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?