簡體   English   中英

無法設置RightBarButtonItems的位置

[英]Can't Set The Position of RightBarButtonItems

我想設置背景圖層的位置,就像圖片中顯示的位置一樣。

我試圖設置圖層的位置,但我不能。

func showRightNavBar()
{
    let inboxButton = UIButton(type: .system)
    inboxButton.setImage(UIImage (named: "email")?.withRenderingMode(.alwaysOriginal), for: .normal)
    inboxButton.imageEdgeInsets = .init(top: 0, left: 35, bottom: 0, right: -30)

    inboxButton.layer.backgroundColor = #colorLiteral(red: 0.521568656, green: 0.1098039225, blue: 0.05098039284, alpha: 1)

    inboxButton.addTarget(self, action: #selector(inboxButtonTapped), for: UIControl.Event.touchUpInside)

    let qrButton = UIButton(type: .system)
    qrButton.setImage(UIImage (named: "QR-code")?.withRenderingMode(.alwaysOriginal), for: .normal)

    qrButton.imageEdgeInsets = .init(top: 5, left: 17, bottom: 5, right: -7)

    qrButton.layer.backgroundColor = #colorLiteral(red: 0.7254902124, green: 0.4784313738, blue: 0.09803921729, alpha: 1)

    qrButton.addTarget(self, action: #selector(qrButtonTapped), for: UIControl.Event.touchUpInside)

    let fixSpace = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
    fixSpace.width = 10

    navigationItem.rightBarButtonItems = [UIBarButtonItem(customView: qrButton),fixSpace,UIBarButtonItem(customView: inboxButton)]
}

我希望背景圖層的位置會像圖片中的位置一樣。

在此輸入圖像描述

我對您的代碼進行了一些更改。

  • 你的按鈕的圖像大小應該是這樣的:

     90 X 90 for 3x 60 X 60 for 2x 40 X 40 for 1x 
  • 檢查在行尾有注釋的代碼行。

     func showRightNavBar() { let inboxButton = UIButton(type: .system) inboxButton.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 40, height: 40)) // Set frame of button inboxButton.setImage(UIImage (named: "email")?.withRenderingMode(.alwaysOriginal), for: .normal) inboxButton.imageEdgeInsets = .init(top: 0, left: 25, bottom: 0, right: -30) // Minor changes in insets inboxButton.layer.backgroundColor = #colorLiteral(red: 0.521568656, green: 0.1098039225, blue: 0.05098039284, alpha: 1) inboxButton.addTarget(self, action: #selector(inboxButtonTapped), for: UIControl.Event.touchUpInside) let qrButton = UIButton(type: .system) qrButton.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 40, height: 40)) // Set frame of button qrButton.setImage(UIImage (named: "QR-code")?.withRenderingMode(.alwaysOriginal), for: .normal) qrButton.imageEdgeInsets = .init(top: 5, left: 7, bottom: 5, right: -7) // Minor changes in insets qrButton.layer.backgroundColor = #colorLiteral(red: 0.7254902124, green: 0.4784313738, blue: 0.09803921729, alpha: 1) qrButton.addTarget(self, action: #selector(qrButtonTapped), for: UIControl.Event.touchUpInside) let fixSpace = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) fixSpace.width = 10 navigationItem.rightBarButtonItems = [UIBarButtonItem(customView: qrButton),fixSpace,UIBarButtonItem(customView: inboxButton)] } 

    在此之后,當我跑步時,它會給我這個結果:

右欄按鈕

func showRightNavBar()
{
    let inboxButton = UIButton(type: .system)
    inboxButton.setImage(UIImage (named: "email")?.withRenderingMode(.alwaysOriginal), for: .normal)
    inboxButton.imageEdgeInsets = .init(top: 0, left: 35, bottom: 0, right: -30)
    inboxButton.contentEdgeInsets = .init(top: 0, left: -37, bottom: 0, right: 20)

    inboxButton.addTarget(self, action: #selector(inboxButtonTapped), for: UIControl.Event.touchUpInside)

    let qrButton = UIButton(type: .system)
    qrButton.setImage(UIImage (named: "QR-code")?.withRenderingMode(.alwaysOriginal), for: .normal)

    qrButton.imageEdgeInsets = .init(top: 5, left: 17, bottom: 5, right: -7)
    qrButton.contentEdgeInsets = .init(top: 0, left: -20, bottom: 0, right: 0)

    qrButton.addTarget(self, action: #selector(qrButtonTapped), for: UIControl.Event.touchUpInside)

    let fixSpace = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
    fixSpace.width = 10

    navigationItem.rightBarButtonItems = [UIBarButtonItem(customView: qrButton),fixSpace,UIBarButtonItem(customView: inboxButton)]
}

只需要設置contentEdgeInsets。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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