2013-10-03 113 views
5

我在設置 self.navigationItem.rightBarButtonItem = self.editButtonItem; in viewDidLoad 這個作品在iOS中很完美< 7在7我得到下面,爲什麼不是標題居中?我究竟做錯了什麼?iOS7 iphone rightBarButtonItem標題未居中/正確顯示

enter image description here

而且當有一個後退按鈕,也沒有被點擊至少一次我得到: enter image description here

被點擊後,我得到: enter image description here

的背景按鈕設置在應用程序代理中:

// Change the appearance of back button 
UIImage *backButtonImage = [[UIImage imageNamed:@"backbtn"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 6)]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

// Change the appearance of other navigation button 

UIImage *barButtonImage = [[UIImage imageNamed:@"btn"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)]; 
[[UIBarButtonItem appearance] setBackgroundImage:barButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
+0

您應該添加該答案並標記或刪除該問題。 – Wain

+0

不幸的是,我不清楚我是不是應該在iOS 7中這樣做?我不應該使用按鈕和barbuttons的背景圖像?我應該能夠做到這一點嗎?此外,我無法將其標記爲答案。 – kos

+0

已經將你的標題集中在右欄按鈕上。如果是這樣,你怎麼實現這個 – Sandeep

回答

0

在iOS7下導航導致同樣的問題...

有幾個答案hereandthere但它們似乎沒有幫助。 如果使用UINavigationBar的backIndicatorImage,它會粘貼到頂部,我不知道如何修復它。

最後我做什麼建議here

創建這樣一個的UIBarButtonItem:

UIBarButtonItem* backBtn = [[UIBarButtonItem alloc] initWithTitle:@"Back" 
                  style:UIBarButtonItemStylePlain 
                  target:self 
                  action:@selector(backButtonAction:)]; 

backBackgroundImage = [UIImage imageNamed: @"back_btn"]; 
backBackgroundImage = [backBarButtonBackground resizableImageWithCapInsets: 
                  UIEdgeInsetsMake(0.0, 14.0, 0.0, 5.0)]; 
[backBtn setBackgroundImage:backBackgroundImage 
        forState:UIControlStateNormal 
       barMetrics:UIBarMetricsDefault]; 

[backBtn setTitlePositionAdjustment:UIOffsetMake(5, 0) forBarMetrics:UIBarMetricsDefault]; 

,然後用它作爲您的導航控制器上的後退按鈕。

+1

這可能會或可能不會工作取決於它在哪裏完成,我試圖在應用程序委託中設置導航項按鈕,以便它們在任何地方重複使用。所以我不確定設置標題的偏移量是否可行,但會試一試。現在我把所有的圖像都放在一起。這也可能無法解決第一次在導航欄上使用圖像時不顯示圖像的問題。 – kos

+0

是的,你說得對。但正如你所看到的,iOS7讓你在每個ViewController上都能做到這一點。還要注意以下奇怪的事情:系統控制器(例如MFMailComposeViewController)會在模態顯示時設置您leftBarButtonItem的字體,因此請注意這一點。不知道它是否會得到記錄。 –

+0

另外,我用編輯按鈕也得到了同樣的結果。我也必須用自定義的替換它。 –