iOS 8 UIPageViewController在转换后应用约束

Aar*_*egh 64 uipageviewcontroller autolayout xcode6 ios8

我的应用程序有一个多窗格教程样式视图,用户可以通过该视图了解该应用程序.这非常实现,如本教程中所述.在为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));
}
Run Code Online (Sandbox Code Playgroud)

这是一个示例输出:

Frame size before: {{0, 0}, {600, 600}}
Frame size after: {{0, 0}, {320, 568}}
Run Code Online (Sandbox Code Playgroud)

这样表现如下:向左滑动以拉入下一个视图,并在新视图的底部注意32磅的空白区域.转换完成后,它会进入正确的布局.

这可能是iOS 8中的错误吗?在这一点上,我完全没猜到.

Dar*_*iss 112

我想你需要在视图上建立约束,而不是视图控制器的布局指南.这将确保您的视图控制器遵守您在PageViewController中转换之前设置的约束.

你可以这样做:

约束例子

请记住取消选中"限制边距"

  • 执行此操作后,您可能还必须取消选择"限制到边距". (17认同)
  • 谢谢你的回答!当然,你需要取消选择"约束边缘",正如@dfickling所说 (2认同)

dfi*_*ing 41

对于任何有这个问题的人来说,对我来说似乎是我正在"相对于保证金"(iOS 8中的一项新功能)布置视图.

代替:

在此输入图像描述

使用:

在此输入图像描述


Ami*_*iQo 0

这是 iOS 8 中的一个错误,但我找到了解决方法:

在故事板的状态栏顶部添加一个空视图。视图的高度应与正在移动的对象的 y 值一样大。

正确约束的图像