0

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

除了更改视图的框架(即边界/中心)或变换之外,系统有什么机制来移动视图使其看起来部分不在屏幕上?

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

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

4

1 回答 1

0

答案是被移动的“视图”是由 UIPageViewController 呈现的,而我没有考虑到这一点。UIPageViewController 在 UIScrollView (我认为是子类)中呈现子视图,因此 iOS 7 更改了包含 UIScrollView 的滚动插图。由于整个“呈现为孩子”的东西实际上有效——当然我可以在子视图中看不到问题。

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

于 2013-11-06T01:19:20.047 回答