【发布时间】:2014-09-11 15:14:44
【问题描述】:
我的应用有一个多窗格的教程式视图,用户可以通过滑动来了解该应用。这与described in this tutorial 非常相似。在为 iOS 7 和 8 实现了它之后,我正在比较它们的工作方式,并发现后者的问题——我在这里运行 Xcode 6 GM。
似乎 UIPageViewController 在转换完成后渲染视图。我覆盖了委托方法以查看发生了什么:
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers
{
NSLog(@"Frame size before: %@", NSStringFromCGRect([(UIViewController*)pendingViewControllers[0] view].frame));
}
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
NSLog(@"Frame size after: %@", NSStringFromCGRect([(UIViewController*)previousViewControllers[0] view].frame));
}
这是一个示例输出:
Frame size before: {{0, 0}, {600, 600}}
Frame size after: {{0, 0}, {320, 568}}
这表现如下:向左滑动以拉入下一个视图,并注意新视图底部的 32 磅空白区域。转换完成后,它会突然进入正确的布局。
这可能是 iOS 8 中的一个错误吗?在这一点上,我完全猜不透了。
【问题讨论】:
-
我也按照相同的教程创建了一个 PageViewController 与 2 PageContentViewController 包含一个 UITextView。两者的外观和视图完全相同。实际上,它们是同一类的实例。当我向左滑动以前进到下一个视图时,文本总是跳下一行,因为 contentSize 最后发生了变化。您可以从调试输出中看到这一点。 gist.github.com/5amfung/7918ca8f78556873dfa5
-
我也有同样的问题,还没解决。
标签: autolayout ios8 xcode6 uipageviewcontroller