簡體   English   中英

如何在rightbarbuttonitem中擬合圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM