2017-08-04 107 views
1

我試圖添加一個導航欄按鈕與自定義圖像。但是,無論我使用什麼方法,圖像總是顯得很緊張。爲什麼自定義導航欄按鈕圖像拉伸?

方法1:

let barbuttonitem = UIBarButtonItem(image: UIImage(named: "apps_small"), style: .plain, target: self, action: nil) 
    navigationItem.leftBarButtonItem = barbuttonitem 

看起來像這樣:

Method 1

方法2:

let button = UIButton(type: .custom) 
    button.setImage(UIImage(named: "apps_small"), for: .normal) 
    button.addTarget(self, action: #selector(TeachingRootViewController.appsTouched), for: .touchUpInside) 
    button.frame = CGRect(x: 0, y: 0, width: 10, height: 10) 
    button.bounds = CGRect(x: 0, y: 0, width: 10, height: 10) 
    navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button) 

似乎升IKE在此:

Method 2

方法3:

let button = UIButton(type: .custom) 
    button.setImage(UIImage(named: "apps_small"), for: .normal) 
    button.setTitle("Button", for: .normal) 
    button.frame = CGRect(x: 0, y: 0, width: 10, height: 10) 
    button.bounds = CGRect(x: 0, y: 0, width: 10, height: 10) 
    button.imageEdgeInsets = .init(top: 5, left: 5, bottom: 5, right: 300) 
    navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button) 
    navigationItem.leftBarButtonItem?.imageInsets = .init(top: 5, left: 5, bottom: 5, right: 300) 

它看起來像這樣:

Method 3

正如你可以看到標題已經一去不復返了。

UI層次結構,它看起來像這樣:

UI Hierarchy

看來,按鈕已採取了所有的空格在導航欄中。

但是,對於按鈕沒有問題的系統項目:

System item

是否有任何人誰知道這個問題的原因是什麼?我想我已經用完了想法。

+0

你解決這個問題的? –

回答

0

嘗試將其添加爲一個子視圖,而不是將其設置爲leftBarButtonItem

var leftButton = UIButton(frame:CGRect(x: 0, y: 0, width: 10, height: 10)) 
var background = UIImageView(image: UIImage(named: "apps_small")) 
background.frame = CGRect(x: 0, y: 0, width: 10, height: 10) 
leftButton.addSubview(background) 
self.navigationController.navigationBar.addSubview(leftButton) 
+0

感謝您的回覆!然而,它不會編譯...編譯器抱怨「類型'UINavigationItem'的值沒有成員'addSubview'」。 UIBarButtonItem也沒有'addSubview'。 – imxieyi

+0

我沒有創建一個UIBarButtonItem ..生病編輯這個使用navController ..所以你可以再試一次 –

+0

@imxieyi你可以再試一次UIButton和UINavigationBar作爲我提供的代碼嗎? –

相關問題