ios - 在 StoryBoard 中显示图像而不是 UIBarButton 的文本

标签 ios swift uibarbuttonitem

我正在创建一个带有导航栏的 ViewController。在这个栏中,我添加了一个 UIBarButton,我将在其上附加一个 segue 以转到另一个 ViewController。 我希望这个按钮是一个图像而不是简单的文本,所以我尝试继续 Attributes Inspector 部分并将图像添加到我的按钮。结果很糟糕: enter image description here

此时你可能会想,我想要一个正确的图像(比如小一点,我的在 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/

相关文章:

ios - ReactiveSwift 不适用于 Xcode 8.1。转换为 Swift 3 会导致 >50 个错误。修复?

iphone - 验证 iphone 是否已连接到基座

swift - 当不为零时我如何获取 CoreData 属性

ios - 如何在 swift 中基于标签禁用 UIBarButtonItem?

ios - 构建起始代码时 Apple Mach-O 链接器错误

ios - 每月每一天的新类实例?

快速最大连续正数

iphone - 如何获取UIBarButtonItem的嵌入按钮

ios - 向自定义 Navigation BarButtonItem 添加操作和目标?

iphone - 在硬件测试中未找到Xib