【问题标题】:Add custom button to navigation controller向导航控制器添加自定义按钮
【发布时间】:2021-06-27 04:20:26
【问题描述】:

所以我想在我的导航控制器中添加一个带有自定义背景图像的自定义设置按钮。目前我尝试这样做:

        func viewDidLoad() {
            super.viewDidLoad()
            
            /// Settings button:
            let settingsButton = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
            settingsButton.setImage(UIImage(named: "Configuration Icon"), for: .normal)
            settingsButton.addTarget(self, action: #selector(configurationTapped), for: .touchUpInside)
            self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: settingsButton)
        }

当我点击此按钮时,configurationTapped 会被触发,但问题是当我将其放在导航控制器之外时,该按钮不会像往常一样闪烁。

我该如何解决这个问题?
我应该在每次调用动作时创建自定义动画,还是我在这里遗漏了什么?

【问题讨论】:

  • 我在示例项目中尝试了您的代码块,并且按钮“闪烁”(如果您的意思是闪烁,则图像被染成黑色)。

标签: ios swift uinavigationcontroller uinavigationbar


【解决方案1】:
let yourButton = UIBarButtonItem(image: yourImage, style: .done, target: self, action: #selector(yourSelector))
self.navigationItem.rightBarButtonItem = yourButton

【讨论】:

  • 谢谢!我没有使用.done,因为Apple 文档说:“完成按钮的样式——例如,完成某项任务并返回到上一个视图的按钮。”。而且我认为它会解雇我当前的 ViewController。 @AbhiRaz
【解决方案2】:

您可以对按钮使用属性:

settingsButton.showsTouchWhenHighlighted = true

Apple Doc 说:“一个布尔值,用于确定点击按钮是否会使其发光。

【讨论】:

  • 感谢您的回复,这让我的按钮闪烁,但它以一种奇怪的方式做到了。它只是在中心闪烁,而不是整个按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
  • 2011-08-03
  • 2014-03-18
  • 1970-01-01
  • 2018-06-01
  • 2014-09-20
  • 1970-01-01
相关资源
最近更新 更多