使用 swift 3 在 UINavigationController 中插入右键图像

Ale*_*nco 3 xcode uibarbuttonitem ios swift swift3

我正在尝试以编程方式覆盖带有静态图像的导航项的 rightButton 以实现此目的:

在此处输入图片说明

以下代码没有给出任何错误,但导航栏中没有显示任何内容。

import UIKit
import Foundation
class UICipNavigationController: UINavigationController {

override func viewDidLoad() {
    super.viewDidLoad()


    // Add BPT LOGO as UIBarButton
    let logoBPT = UIImage(named: "Logo BPT")?.withRenderingMode(.alwaysOriginal)

    let logoBPTBarButton = UIBarButtonItem(image: logoBPT, style: .plain, target: nil, action: nil)
    self.navigationItem.rightBarButtonItem = logoBPTBarButton


}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}
Run Code Online (Sandbox Code Playgroud)

.

import UIKit

class UICipNavigationBar: UINavigationBar {

override init(frame: CGRect){
    super.init(frame: frame)

}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!

    self.tintColor = UIColor.white

    self.setBackgroundImage(UIImage.fromColor(color: UIColorFromHex(rgbValue: 0xffffff, alpha: 0.2)), for: UIBarMetrics.default)
    self.shadowImage = UIImage()
    self.isTranslucent = true
    self.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white, NSFontAttributeName: UIFont(name: "Lato-Regular", size: 24)!]

}

override func sizeThatFits(_ size: CGSize) -> CGSize {
    let newSize :CGSize = CGSize(width: self.superview!.bounds.size.width, height: 60)
    return newSize
}

}
Run Code Online (Sandbox Code Playgroud)

我也尝试检查视图,但似乎没有添加任何内容:

在此处输入图片说明

Joe*_*Joe 5

注意: Image name/file/extention是敏感的。当你设置时barButtonImage。确保你正确设置它们。我正在评估asset catalog(32pt)的图像文件。

 let myimage = UIImage(named: "YourImageFileName")?.withRenderingMode(.alwaysOriginal)
 navigationItem.rightBarButtonItem = UIBarButtonItem(image: myimage, style: .plain, target: self, action: #selector(ButtonTapped))


 func ButtonTapped() { 
 print("Button Tapped")  
}
Run Code Online (Sandbox Code Playgroud)

输出: updated

在此处输入图片说明

方法二:Testing Purpose

注意:在 Xcode 中将您的标题设置为表情符号图标。运行项目,看看效果如何?

    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: self, action: #selector(ButtonTapped))

    func ButtonTapped() { 
    print("Button Tapped")  
   }
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明