如何解决我可以在Swift中制作大rightBarButtonItem吗?
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
?
像这样的东西:
解决方法
请仔细回答this,该问题显示了如何折叠和变大时管理导航栏标题。它不会给您确切的答案,但绝对可以帮助您实现所需的目标。
否则,请通过this答案,这将帮助您了解如何将x,y位置赋予右栏按钮项。
快速概述一下如何结合这两个答案来实现所需的目标:-
- 根据您要执行的导航栏的位置或高度,设置右栏按钮项的位置。链接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])
}
我还创建了此功能以将其删除(因此在上面使用了标签):
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 举报,一经查实,本站将立刻删除。