2013-10-25 16 views
0

我正在使用Three20(ack!)编写的旧代码库。现在我们需要能够将这个应用程序部署到iOS7和iOS6。iOS7 NavigationBar从每个赛段的44到64点可视化增长

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

所以,切换视图... ...平稳黄油... 满贯。清洗,冲洗,重复。

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

我会显示代码,但我不确定要显示的代码。

我会很感激所有的指针(RTFM评论欣然接受),我的谷歌福失败了我这一次。

查看层次结构看起来是这样的: UIScreen TTNavigatorWindow UILayoutContainerView UINavigationTransitionView UIViewControllerWrapperView 的UIView TTTableView UITableViewWrapperView ...等等...

这是一个three20问题,即three20假设导航栏总是有44个高度,但现在它们不是?

这是一个Interface Builder的问题,即导航栏只能在44点创建,并且我应该处理这口井在我的代码?

这是一门深奥的iOS 7问题,即它的决定,因为导航是在顶层,它需要改变定期的高度?

这是一个文档问题,即观察我的(显然微薄的)权力只是没有看到相关的位在苹果文档?

感谢,所有的

-Ken

回答

1

首先,我想推荐给摆脱Three20的。我知道这对你的情况并不是很有帮助,但真的。

但后来我想向你提供两个思路上就可能会发生:

  • Three20确实使用在不同的地方硬编码的导航栏的大小,但我不认为这会导致你的问题在这里描述。我可能会很确定它会在其他地方导致iOS7问题。

  • 从你描述它听起来像iOS7计算导航栏的高度可能是问题的方式。因为它会以某种方式推断出three20如何管理视图,因此它对于普通的UIKit来说工作正常。如果将整个视图堆栈向下移动1 px,屏幕底部会发生什么?我想,导航栏不会改变它的大小。要了解,请看how iOS7 calculates the navigation bar height。我想你想要的是整个动画中的64像素导航条。我必须弄清楚如何修改动画之前呈现的视图控制器的框架以实现该效果。

我希望这些想法可以有所帮助。

+0

嗨通克隆,谢谢你的回复。是的,three20 *有*去。 (我们已经向力量解释说,这是浪费精力......对于这个版本我们不能把旧工作扔掉,而必须与我们所得到的结合起来)。 –

+0

我对iOS7窗口化更改印象不深。他们显然给了那些需要能够同时瞄准6和7的开发人员。他们想要强加一种我们被迫维持两种结构的情况。相当令人不快的苹果,但越来越真实的形式。感谢链接到导航栏高度计算! –