iOS7 NavigationBar在视觉上从每段44点增加到64点

iOS7 NavigationBar在视觉上从每段44点增加到64点,ios7,uinavigationbar,three20,Ios7,Uinavigationbar,Three20,我正在使用Three20(ack!)编写一个旧的代码库。现在我们需要能够将此应用程序部署到iOS7和iOS6 大多数情况下,它是工作的,但当用户点击并导致在视图控制器之间切换时,导航栏在过渡动画期间使用44点导航栏绘制,但当动画完成时,导航栏将捕捉到64点高 所以,换个角度…平滑…黄油…砰的一声。清洗,漂洗,重复 在任何iOS7iPhone大小的设备上,从一个视图切换到另一个视图时,都会产生抖动效果。有趣的是,它只在从一个视图切换到另一个视图时发生,而不是在切换到当前ViewController

我正在使用Three20(ack!)编写一个旧的代码库。现在我们需要能够将此应用程序部署到iOS7和iOS6

大多数情况下,它是工作的,但当用户点击并导致在视图控制器之间切换时,导航栏在过渡动画期间使用44点导航栏绘制,但当动画完成时,导航栏将捕捉到64点高

所以,换个角度…平滑…黄油…砰的一声。清洗,漂洗,重复

在任何iOS7iPhone大小的设备上,从一个视图切换到另一个视图时,都会产生抖动效果。有趣的是,它只在从一个视图切换到另一个视图时发生,而不是在切换到当前ViewController的新实例时发生

我会显示代码,但我不确定要显示什么代码

我很感激任何指点(RTFM评论很乐意接受),这次我的Google fu让我失望了

视图层次结构如下所示: 屏幕 TTNavigator窗口 UILayoutContainerView UINavigationTransitionView UIViewControllerRapperView UIView TTTableView UITableViewWrapperView ……等等

这是一个three20问题吗?three20假设导航栏总是44点高,但现在不是了

这是否是一个界面生成器问题,其中导航栏只能在44点处创建,我应该在代码中很好地处理这个问题

这是否是iOS 7的一个深奥问题,因为导航器处于顶级,所以需要定期更改高度

这是不是一个文档问题,我(显然是微薄的)观察能力在苹果文档中没有看到相关的内容

谢谢


-肯:首先,我想建议你摆脱Three20。我知道这对你的处境没有多大帮助,但真的

但接下来我想就可能发生的事情向你们提出两个想法:

  • Three20确实在不同的地方使用了硬编码的导航条大小,但我不认为这会导致您在这里描述的问题。虽然我很确定它会在其他地方引起iOS7的问题,但我可能会这样做

  • 从您的描述来看,问题可能在于iOS7计算导航栏高度的方式。当然,这会以某种方式推断three20是如何管理视图的,因为它对普通UIKit工作正常。如果将整个视图堆栈向下移动1 px,朝向屏幕底部,会发生什么情况?我猜,导航栏不会改变它的大小。要理解这一点,请看一看。我想你想要的是贯穿整个动画的64像素导航栏。我必须弄清楚如何在动画出现之前修改视图控制器的帧以实现该效果


我希望其中一些想法能有所帮助。

嗨,唐克伦,谢谢你的回复。是的,我得走了。(我们已经向权力机构解释过,这是白费力气……对于本次发布,我们不能扔掉旧的工作,必须处理好现有的工作)。我对iOS7窗口的更改印象不太好。他们显然没有考虑开发人员需要同时瞄准6和7。他们想让我们被迫维持两个结构。对苹果公司来说有点恼人,但越来越真实。感谢链接到导航栏高度计算!