2013-10-03 111 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

另外,我用编辑按钮也得到了同样的结果。我也必须用自定义的替换它。 –