[英]How to fit an image in rightbarbuttonitem
我一直試圖在導航欄中的titleView
的右側放置一個hamburger
按鈕(三行平行),但是每次這樣做,我輸入的圖像都會覆蓋整個導航欄並擺脫titleView
我的圖像在titleView
。
如果在情節提要編輯器中選擇默認圖像,它將顯示在導航欄的右側,沒有任何問題,但是,一旦在情節提要編輯器中選擇“漢堡包”按鈕,我將遇到與以前相同的問題。 我嘗試使用多個不同的圖像,但對代碼進行了一些改動,但均未成功。 有沒有一種方法可以調整我正在使用的圖像的大小,使其適合導航欄,或者我的代碼是否有問題?
這是我來自以下viewController.swift
代碼:
override func viewDidAppear(_ animated: Bool) {
let nav = self.navigationController?.navigationBar
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
imageView.contentMode = .scaleAspectFit
let titleImage = UIImage(named: "logowhitecircle")
imageView.image = titleImage
navigationItem.titleView = imageView
let menuButton = UIButton(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
menuButton.contentMode = .scaleAspectFit
let menuImage = UIImage(named: "hamburgericon")
menuButton.setImage(menuImage, for: .normal)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: menuButton)
嘗試使用以下代碼:
let imageBurger = UIImage(named: "hamburgericon")!
let btnLeftMenu = UIButton(type: .system)
btnLeftMenu.bounds = CGRect(x: 10, y: 0, width: imageBurger.size.width, height: imageBurger.size.height)
btnLeftMenu.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
btnLeftMenu.setImage(imageBurger, for: UIControl.State())
btnLeftMenu.setTitle(title, for: .normal)
let leftButton = UIBarButtonItem(customView: btnLeftMenu)
self.navigationItem.leftBarButtonItem = leftButton
試試這個模塊FFBadgedBarButtonItem,它是易於使用的模塊,這是文檔鏈接
下面是我的代碼如何實現!
let image = UIImage(named: "yourImage")
let finalImage = resizeImage(image: image!, newWidth: 30)
navigationItem.rightBarButtonItem = FFBadgedBarButtonItem(image: finalImage, target: self, action: #selector(rightButtonTouched))
這是調用函數
@objc func rightButtonTouched() {
// what event you need to perfom by clicking on this button
}
您需要創建橋接頭才能與此Obj-C模塊一起使用。
:D
嘗試這個:
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: "hamburgericon"), forState: UIControlState.Normal)
//add function for button
button.addTarget(self, action: "customButtonPressed", forControlEvents: UIControlEvents.TouchUpInside)
//set frame
button.frame = CGRectMake(0, 0, 40, 40)
let barButton = UIBarButtonItem(customView: button)
//assign button to navigationbar
self.navigationItem.rightBarButtonItem = barButton
}
//This method will call when you press button.
func customButtonPressed() {
println("button pressed")
}
}
您需要在圖像資源中設置圖像大小,例如3x = 84px,2x = 56px,1x = 28px ,
請參閱蘋果文檔以獲取更多信息: https : //developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/custom-icons/
let menuButton = UIBarButtonItem(image: UIImage(named: "logowhitecircle"), style: .plain, target: self, action: #selector(menuButtonTapped(_:)))
self.navigationItem.rightBarButtonItem = menuBu
tton
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.