为什么我的导航和正常按钮文本和图像不可见,但可操作?



为什么我的导航和正常按钮文本和图像不可见,但可操作,当我在iphone上构建应用程序,以及当我在模拟器上构建应用程序后检查应用程序?

这是我如何添加按钮到导航栏:

@objc func moreNavigationButton() -> UIBarButtonItem {
let barButton:UIButton = UIButton.init(type: .custom)
barButton.addTarget(self, action:#selector(moreNavigationButtonClicked), for: .touchUpInside)
barButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
barButton.setImage(UIImage(named: "ic_more"), for: .normal)
barButton.imageView?.contentMode = .scaleAspectFit

let barButtonItem:UIBarButtonItem = UIBarButtonItem.init(customView: barButton)
barButtonItem.width = 30

return barButtonItem
}

在viewWillAppear()函数中,我像下面这样调用上述方法:

self.navigationItem.rightBarButtonItems = [self.moreNavigationButton()]

现在我们有不同的按钮设置在我这边我通常这样做

navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped)) 
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped))

然后我设置2 barButtonItem

let add = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
let play = UIBarButtonItem(title: "Play", style: .plain, target: self, action: #selector(playTapped))

这里我有他们的导航项navigationItem。rightBarButtonItems = [add, play]

我想你应该设置Bar button item而不是button。

感谢Paul Hudson的内容,它总是很有帮助
如果有帮助请告诉我

大家早上好,今天早上我创建了一个新的项目,系统是创建你自己的navigationBar和barButton。请随意下载fork,做一些pull request或其他操作。

https://github.com/Gioovannii/Navigation-bar/tree/main

下面的扩展导致这个问题。现在我注释了它,它就解决了。

extension UIButton {
open override func layoutSubviews() {
super.layoutSubviews()
if imageView != nil {
imageEdgeInsets = UIEdgeInsets(top: 5, left: (bounds.width - 5), bottom: 5, right: 5)
titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: (imageView?.frame.width)!)
}
}
}

最新更新