您需要提供拉伸圖像的按鈕,所以它知道如何正確地顯示出來:
UIImage *buttonImage = [[UIImage imageNamed:@"backButtonImage"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 6)]
你不需要做什麼特別的圖像本身,而是你需要指定適當的邊緣插入用於可調整大小的圖像,以指示圖像邊緣周圍應該不被拉伸的區域,如上所示(該示例顯示了左側15像素和右側6像素的插圖) 。該區域應該覆蓋箭頭和彎曲的右邊緣,以便中間區域可以根據需要伸出。有關此方法的更多信息,請參閱Read the documentation。
UPDATE:默認情況下,圖像的可調整大小的區域將被平鋪到新的大小,但是如果你想擁有它,而不是舒展,你可以使用resizableImageWithCapInsets:resizingMode:
並通過UIImageResizingModeStretch
實現這一行爲。對於你的情況,很明顯平鋪會更好,因爲它可以保留拼接,但對於某些背景圖像,拉伸是更好的解決方案。只是把這個放在這裏來幫助任何未來看到這個的人。
一旦你的伸展圖像,您可以使用此代碼更改外觀後退按鈕:
[myBackButtonItem setBackButtonBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
或者,您可以爲應用中的所有後退按鈕使用此代碼設置此定製外觀:
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
運行此應用程序啓動時,它會影響您的應用程序中的所有後退按鈕。
請注意,與其他一些答案暗示的不同,您不需要手動創建任何後退按鈕。如果您創建UINavigationController
並以推薦的方式使用它(請參閱in the documentation,當您使用pushViewController:animated:
推視圖控制器時,將爲您創建一個導航欄和後退按鈕。如果使用全局UIAppearance
代碼段應用自定義的按鈕樣式,它會自動應用到你所有的後退按鈕。
你可以閱讀更多關於setBackButtonBackgroundImage:forState:barMetrics:
in the official documentation。
也有可以在網上如何更深入的解釋許多教程這工作和如何做到這一點,這裏有幾個很好的:
創建自定義的UIBarButtonItem – NANNAV
看看我的代碼對你有幫助... – Jitendra