0

我想在我的navigationController中使用圖像作爲我的backButton。我只是想使用的圖像,與所有顯示沒有「回來」的文字,所以我所做的:UIBarButtonItem backButton設置圖像沒有背文本會導致標題對齊問題

UIImage *backButtonImage = [[UIImage imageNamed:@"ZSSBackButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 25, 0, 0)]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, backButtonImage.size.height*2) forBarMetrics:UIBarMetricsDefault]; 

這種運作良好,但似乎有副作用使長navigationItem標題似乎是偏離中心,即使它真的只是留下的空白,其中後退按鈕文本應該是:

enter image description here

有沒有一種方法,我可以把標題更向左一點?

+0

你有沒有得到任何解決方案? –

回答

0

您可以使用titleView屬性來管理UINavigationbar標題的位置。

UIView *backView =[[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 40)];// Here you can set View width and height as per your requirement for displaying titleLbl position in navigationbar 
[backView setBackgroundColor:[UIColor clearColor]]; 
UILabel *titleLbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 40)]; 
[backView addSubview:titleLbl]; 
titleLbl.text = @"YOUR TITLE"; 
titleLbl.textAlignment = NSTextAlignmentCenter; 
self.navigationItem.titleView = backView; 

編輯:您可以創建自定義按鈕並指定其爲leftbutton:

UIButton *btnBack = [UIButton buttonWithType:UIButtonTypeCustom]; 
btnBack.frame = CGRectMake(0,0,51,31); 
[btnBack setBackgroundImage:[UIImage imageNamed:@"ZSSBackButton"] forState:UIControlStateNormal]; 
[btnBack addTarget:self action:@selector(btnBackProfile_TouchUpInside:) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *leftBtn = [[UIBarButtonItem alloc] initWithCustomView:btnBack]; 
[self.navigationItem setLeftBarButtonItem:leftBtn]; 

希望它可以幫助你。

+0

是的,我已經完成了這個,但是當你必須在右側顯示一個'UIBarButtonItem'時,這是一個痛苦。事情搞砸了。 –

+0

我已經使用過很多次了。適用於我。您需要根據需要設置backview框架和titlelbl框架。 –

+0

檢查我更新的答案。我已經傳遞了自定義按鈕並設置了導航欄的左側按鈕。 –