3

我試圖替換默認的導航欄後退按鈕圖像欄後退按鈕enter image description here更換導航無拉伸

怎麼樣?原始圖像是11x44點。

編輯:應用此之後,

[UINavigationBar appearance].backIndicatorImage = backButtonImage; 
[UINavigationBar appearance].backIndicatorTransitionMaskImage = backButtonImage; 

我得到這個:enter image description here

我已經花了幾個小時試圖讓箭頭向下移動,所以,它的垂直在標題的文本對齊導航欄,無濟於事。我見過其他線程有同樣的問題,但沒有解決方案。爲什麼這會如此困難?這似乎是每個人誰取代後退按鈕圖像將不得不處理這一點。

+0

你必須把圖像作爲1x,2x,3x – 2014-12-13 04:48:04

+0

當然。 2x圖像是22x88。 [email protected] – soleil 2014-12-13 04:50:06

回答

4

試試這個代碼:

UIImage *backBtnIcon = [UIImage imageNamed:@"backNavIcon.png"]; 

if (([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)) { 
    [UINavigationBar appearance].backIndicatorImage = backBtnIcon; 
    [UINavigationBar appearance].backIndicatorTransitionMaskImage = backBtnIcon; 
} 
else{ 
UIImage *backButtonImage = [backBtnIcon resizableImageWithCapInsets:UIEdgeInsetsMake(0, backBtnIcon.size.width - 1, 0, 0)]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -backButtonImage.size.height*2) forBarMetrics:UIBarMetricsDefault]; 
} 

不要忘了把3張1倍,2倍@ @和3X圖片資源。

請檢查蘋果文件的UIElements後退按鈕。

謝謝!

+1

有趣。我從來沒有聽說過backIndicatorImage。這幾乎可以工作,但後退按鈕在64像素導航欄中垂直居中。由於狀態欄佔據了前20像素,因此我需要將圖像垂直居中於導航欄的下方44像素。有沒有辦法做到這一點,或者我必須將圖像保存爲64像素的高度? – soleil 2014-12-13 04:59:07

+0

@soleil嘗試在resizableImageWithCapInsets中做一些更改我認爲你可以做到這一點。 – 2014-12-13 06:23:30

+1

我也從來沒有聽說過'backIndicatorImage'。感謝分享這個。 – Anon 2014-12-13 07:03:52

1

您可以使用基於您的@「back_button」圖像的CGContextRef創建一個新的UIImage,在其右側繪製一個1點寬度的透明空間,以便您可以撥打resizableImageWithCapInsets:UIEdgeInsetsMake(0, backButtonImage.size.width - 1, 0, 0)