在StoryBoard中为UIBarButton显示图像而不是文本

时间:2018-12-12 14:56:14

标签: ios swift uibarbuttonitem

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

这时您可能会想,我想得到一个正确的图像(比如小一点,我的xcassets高度和宽度为25px)。

通过使用以下方法,我设法以编程方式获得了更好的结果:

hpSettingsBtn.image = UIImage(named: "settings")

但仍然不是我想要的。

有什么主意吗?

我还尝试了使用自定义视图的功能,但随后我的按钮不再可点击。

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与(因为按钮未出现)一起使用在情节提要上。

2 个答案:

答案 0 :(得分:1)

首先创建一个从第一个viewController到第二个viewController的segue,然后为该segue设置一个标识符。

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
}

按钮动作方法

@objc func btnClick(_ sender:UIButton) {
    self.performSegueWithIdentifier("segue1", sender: self)
}

答案 1 :(得分:0)

您可以通过转到情节提要中的标尺查看选项卡来更改条形项目的情节提要中的图像插图,如图所示。希望对您有所帮助1]