我正在创建一个带有导航栏的 ViewController。在这个栏中,我添加了一个 UIBarButton,我将在其上附加一个 segue 以转到另一个 ViewController。 我希望这个按钮是一个图像而不是简单的文本,所以我尝试继续 Attributes Inspector 部分并将图像添加到我的按钮。结果很糟糕:
此时你可能会想,我想要一个正确的图像(比如小一点,我的在 xcassets 下,25 像素的高度和宽度)。
通过使用这个,我设法以编程方式获得了更好的东西:
hpSettingsBtn.image = UIImage(named: "settings")
但还是不是我想要的。
有什么想法吗?
我也尝试过使用自定义 View 的功能,但我的按钮无法再点击。
class HomePageViewController: UIViewController {
@IBOutlet weak var hpSettingsBtn: UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()
let button = createSettingsBtn()
hpSettingsBtn.customView = button
}
func createSettingsBtn() -> UIButton {
//create a new button
let button = UIButton(type: .custom)
//set image for button
button.setImage(UIImage(named: "settings"), for: .normal)
//set frame
button.frame = CGRect(x: 0, y: 0, width: 25, height: 25)
button.widthAnchor.constraint(equalToConstant: 25).isActive = true
button.heightAnchor.constraint(equalToConstant: 25).isActive = true
return button
}
如果我使用这段代码,没有 UIBarButton(通过在我的代码中创建它并将它自己附加到导航栏)那么我不知道是否可以使用 segue (因为按钮没有出现在 Storyboard上)。
最佳答案
首先创建一个从第一个 viewController 到第二个 viewController 的转场,并为该转场设置一个标识符。
eg : segue1 //segue identifier
然后创建自定义按钮
func makeSettingsBtn() {
//create a new button
let button = UIButton(type: .custom)
//set image for button
button.setImage(UIImage(named: "settings"), for: .normal)
//set frame
button.frame = CGRect(x: 0, y: 0, width: 25, height: 25)
button.widthAnchor.constraint(equalToConstant: 25).isActive = true
button.heightAnchor.constraint(equalToConstant: 25).isActive = true
//Add target
button.addTarget(self, action: #selector(self.btnClick(_:)), for: .touchUpInside)
let barButton = UIBarButtonItem(customView: button)
self.navigationItem.rightBarButtonItem = barButton
}
按钮 Action 方法
@objc func btnClick(_ sender:UIButton) {
self.performSegueWithIdentifier("segue1", sender: self)
}
关于ios - 在 StoryBoard 中显示图像而不是 UIBarButton 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53745731/