UIBarButtonItem在UINavigationController推送后向下移动

时间:2013-03-18 14:15:59

标签: ios xcode uinavigationcontroller uiappearance

我的应用程序在UINavigationController中运行。当我从右侧推入一个新的视图控制器时,右上角的UIBarButtonItem(编辑)向下移动1个像素 - 编辑按钮保持原位,但图形明显向下移动。

我注意到这只发生在为条形按钮项设置UIAppearance代理之后。这是我的代码:

UIImage *barButton = [[UIImage imageNamed:@"navBarBarButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
[[UIBarButtonItem appearance] setBackgroundImage:barButton
                                        forState:UIControlStateNormal
                                      barMetrics:UIBarMetricsDefault];

navBarBarButton.png是一个52x31 bar的按钮图像。

其他可能相关的信息:

  • 这只发生在iOS 6模拟器中 - 在iOS 5中很好。
  • 此应用程序使用故事板,推送由segues处理。
  • 一个像素的位移只发生一次,即当我进入另一个级别进入导航控制器时,它不会被第二次按下。
  • “编辑”按钮的文字保持原样;只有按钮图形移动。
  • 我尝试在不同的视图控制器中启动应用程序(即导航堆栈中的第二个)。条形按钮项目显示在正常(较高)位置,然后在我按下新视图时向下移动。这似乎表明它与任何特定的视图控制器无关。

有没有人看过这个,知道为什么会这样,或者如何防止按钮移动?感谢。

2 个答案:

答案 0 :(得分:3)

如果有人遇到同样的问题,我设法通过让我的barButton图像处于标准的30px高度(而不是31,如上所述)来解决问题。

答案 1 :(得分:1)

当字体大小为18时,我遇到了问题。在我将其更改为19后,移位消失了,导航栏平滑过渡。