2014-01-11 51 views
1

我已将自定义titleView添加到我的UINavigationItem,并且包含打算置于状态栏下的视图。它看起来很好,当我推动另一个视图控制器,并在标准的从右到左的动画中转换时,它看起来很好。但是,当我[self.navigationController popViewControllerAnimated:YES]它剪辑此视图的顶部,直到动画完成。请参阅附加图像以更好地解释问题。UINavigationBar剪辑热门内容

只有在弹出动画完成后,它才会再次显得正常。我尝试了所有我能想到的。在所有视图viewControllernavigationBar上设置cropsToBoundsNO。我也试过layer.masksToBounds和几乎所有听起来很熟悉的房产。我添加了一个计时器,可以打印导航栏的框架矩形和自定义titleView,并且不会显示它们改变任何内容。

有人知道我在做什么错吗?

the problem

回答

2

两种方式做到这一点:

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { // if iOS 7 
    self.edgesForExtendedLayout = UIRectEdgeNone; //layout adjustements 
} 

或者

您需要设置您的视图控制器的三角洲。从工具区(第1项)切换到ios6.1或更高版本。然后选择您的Vc视图,并在实用区域的尺寸检查器菜单中,框架下方会出现增量部分。每个三角洲之前都会有三角形。三角y到64(你应该在故事板的ios6.1或更高版本中)。

如果您需要帮助的三角洲,请访问: Interface Builder: What are the UIView's Layout iOS 6/7 Deltas for?

+0

我已经试过edgesForExtendedLayout'设置''要和UIRectEdgeNone''UIRectEdgeAll'上我能想到的,没有区别的所有viewControllers。由于iOS6/7帧更改,问题不在于典型的状态栏重叠。这就是UINavigationBar在动画制作时剪辑内容。我不会在动画制作时剪辑或遮盖内容。 – ErikPerik

+0

尝试第二个选项,因为它更好。曾经使用过Deltas? – Xeieshan

+0

Deltas不会解决这个问题,因为它不是iOS6和7之间的区别。就像我说的,当它不处于过渡状态时,它看起来很好。当弹出动画完成时,橙色栏的剪辑部分再次出现。我不明白三角洲会如何解决这个问题。 – ErikPerik