将视图部分移出屏幕的机制

时间:2013-10-26 17:58:05

标签: ios7

我有一个问题,没有人提供任何帮助,所以让我提出一个技术问题来帮助我自己诊断。

系统有什么机制来移动视图,除了更改视图的边框(即边界/中心)或变换外,它看起来部分偏离屏幕?

这是一个需要在iOS 5/6上运行的应用,所以我没有使用自动布局。 我通过push segue获得了全屏视图。 暂停后,我隐藏(半透明)状态和导航栏。 当条形图隐藏动画时,它们会从屏幕上滑下来。 在iOS 5/6中,这只是暴露视图的顶部(这是一个图像)。在iOS 7中,它将整个视图向上移动“屏幕外”相应的量(即,如果我隐藏两个条,则为64点),在屏幕底部的视图“下方”显示内容栏。 当我取消隐藏条形图(通过敲击)时,条形图出现,视图向下移动以占据整个屏幕。 VC是否设置为在条形下扩展视图不会影响行为。 我无法在简化的应用程序中重现此行为。

在任一状态,即部分屏外或完全在屏幕上,顶级视图帧保持{0,0} 320×480,并且变换矩阵保持{1,0,0,1,0,0}。我不知道系统正在改变什么对象的属性可视地移动视图。也许如果我知道要检查哪些对象/属性,我可以推断出正在发生的事情。谁能告诉我系统如何做到这一点?

1 个答案:

答案 0 :(得分:0)

答案是正在移动的“视图”由UIPageViewController呈现,我没有想到这一点。 UIPageViewController在UIScrollView(我认为是子类)中呈现子视图,因此iOS 7正在更改包含UIScrollView的滚动插入内容。因为整个“作为孩子呈现”的东西实际上是有用的 - 我在子视图中看不到问题。

“修复”是取消UIPageViewController视图的调整滚动视图插入的视图控制器设置。