2014-11-14 128 views
0

我想要做的是改變後退按鈕的高度。但是,據我所知,唯一的選擇是寬度。所以,我想我會用我自己的小圖像創建一個自定義後退按鈕。現在我已經做到這一點使用viewDidLoad方法與下面的代碼:圖像自定義後退按鈕

//Setup navigation bar 
     navigationController?.navigationItem.backBarButtonItem = UIBarButtonItem(image:UIImage(named:"back_arrow.png"), style:UIBarButtonItemStyle.Plain, target:nil, action:nil) 
     navigationController?.navigationItem.backBarButtonItem!.title = "" 

但是,後退按鈕呈藍色,大,並有標題「後退」。我怎樣才能讓這段代碼正常工作?調試器說它正在運行,但它沒有改變任何東西。

回答

3

對於顏色,您必須在navBar上設置色調顏色,也可以將navigationItem.backBarButtonItem設置爲nil,並使用leftbarButtonItem和自定義按鈕圖像。

+0

然後我失去了股票backBarButton回功能。我只是想改變後欄按鈕的圖像,擺脫標題,並保留後面的功能。 – steventnorris 2014-11-14 21:52:14

+0

是的,但你可以在左邊的按鈕處理程序中做到這一點[self.navigationController popToRootViewController] – Puran 2014-11-15 02:36:19

5

我將向您展示如何在整個應用程序中執行此操作,而不僅僅是一個頁面。

要改變後退按鈕的默認圖片,把你的應用程序代理didFinishLaunchingWithOptions:如下:

斯威夫特:

let backArrowImage = UIImage(named: "customImage") 
let renderedImage = backArrowImage?.imageWithRenderingMode(.AlwaysOriginal) 
UINavigationBar.appearance().backIndicatorImage = renderedImage 
UINavigationBar.appearance().backIndicatorTransitionMaskImage = renderedImage 

的OBJ-C:」

UIImage *backArrowImage = [UIImage imageNamed:@"customImage"]; 
UIImage *renderedImage = [backArrowImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
[UINavigationBar appearance].backIndicatorImage = renderedImage; 
[UINavigationBar appearance].backIndicatorTransitionMaskImage = renderedImage; 

要從按鈕中刪除「返回」文本,請將此類別添加到您的AppDelegate.m文件(o [R你自己的類別)

不知道如何做到這一點的斯威夫特還沒有,所以這裏的對象 - 版本:

@implementation UINavigationItem (LuxeCustomization) 

/** 
Removes text from all default back buttons so only the arrow or custom image shows up 
*/ 
-(UIBarButtonItem *)backBarButtonItem 
{ 
    return [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; 
} 

@end 
+0

在swift中全局刪除「返回」按鈕標題...請參閱http://stackoverflow.com/a/33707584/6059628 – 2016-05-14 09:15:35