我正在try 设置栏按钮项的图像,因为我有如下图像:

在此处输入图像描述

分辨率为30*30,但当我将此图像指定给条形图按钮时,它看起来如下所示:

在此处输入图像描述

我以这种方式分配了映像:

在此处输入图像描述

如果我试着这样做,比如为按钮制作一个IBOutlet,然后通过编程设置图像,形成this个问题和代码:

 // Outlet for bar button
 @IBOutlet weak var fbButton: UIBarButtonItem!

// Set Image for bar button
var backImg: UIImage = UIImage(named: "fb.png")!
fbButton.setBackgroundImage(backImg, forState: .Normal, barMetrics: .Default)

但这件事什么都没发生,

有人能告诉我我做错了什么吗?

或者哪种击球手的方式可以做到这一点?

推荐答案

我已经通过以下代码编程实现了这一点:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //create a new button
        let button: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
        //set image for button
        button.setImage(UIImage(named: "fb.png"), forState: UIControlState.Normal)
        //add function for button
        button.addTarget(self, action: "fbButtonPressed", forControlEvents: UIControlEvents.TouchUpInside)
        //set frame
        button.frame = CGRectMake(0, 0, 53, 31)

        let barButton = UIBarButtonItem(customView: button)
        //assign button to navigationbar
        self.navigationItem.rightBarButtonItem = barButton
    }

    //This method will call when you press button.
    func fbButtonPressed() {

        println("Share to fb")
    }
}

结果将是:

enter image description here

同样,您也可以通过以下方式设置左侧的按钮:

self.navigationItem.leftBarButtonItem = barButton

结果将是:

enter image description here

如果您希望在使用默认的后退按钮返回时与导航控制器拥有相同的事务,则可以使用自定义的后退按钮使用以下代码来实现:

func backButtonPressed(sender:UIButton) {
    navigationController?.popViewControllerAnimated(true)
}

对于SWIFT 3.0:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //create a new button
        let button = UIButton.init(type: .custom)
        //set image for button
        button.setImage(UIImage(named: "fb.png"), for: UIControlState.normal)
        //add function for button
        button.addTarget(self, action: #selector(ViewController.fbButtonPressed), for: UIControlEvents.touchUpInside)
        //set frame
        button.frame = CGRect(x: 0, y: 0, width: 53, height: 51)

        let barButton = UIBarButtonItem(customView: button)
        //assign button to navigationbar
        self.navigationItem.rightBarButtonItem = barButton
    }

    //This method will call when you press button.
    func fbButtonPressed() {

        print("Share to fb")
    }
}

对于swift 4.0:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //create a new button
        let button = UIButton(type: .custom)
        //set image for button
        button.setImage(UIImage(named: "fb.png"), for: .normal)
        //add function for button
        button.addTarget(self, action: #selector(fbButtonPressed), for: .touchUpInside)
        //set frame
        button.frame = CGRect(x: 0, y: 0, width: 53, height: 51)

        let barButton = UIBarButtonItem(customView: button)
        //assign button to navigationbar
        self.navigationItem.rightBarButtonItem = barButton
    }

    //This method will call when you press button.
    @objc func fbButtonPressed() {

        print("Share to fb")
    }
}

Ios相关问答推荐

如何在SwiftUI中以一定Angular 绘制直线(&A)

封装 Swift 导入

WatchConnectivity - 从手表配套应用程序在 iOS 设备上启动 AVPlayer

iOS设备网页自动化中,在向字段发送文本后未启用按钮

更新 flutter 和 xcode 后 Xcode 14.3 中缺少文件 (libarclite_iphoneos.a)

当 Swift 枚举具有 any existential 作为其关联值之一时,我如何使它符合 `Equatable`?

SwiftUI - 如何从主题感知命名 colored颜色 中获取正确的 RGB 值?

以正确的方式在 Text() 中使用 colored颜色

.onAppear() 函数不适用于 NavigationLink

SensorKit - 获取数据不调用结果委托函数

从远程通知启动时,iOS 应用程序加载错误

辅助功能判断器无法在 macOS Monterey 版本 12.3 上的 Xcode 版本 13.3 上运行

Apple Push Service 证书不受信任

通过按钮打开 AppStore

未找到签名证书​​iOS Distribution

如何在react 导航中获取当前路由名称?

如何识别导航堆栈中的前一个视图控制器

UITextView 内容插图

如何检测快速touch 或单击的tableView单元格

更改标签栏项目图像和文本 colored颜色 iOS