AutoLayout 在显示时自动更新位置

AutoLayout updates positions automatically when presented

我有一个包含多个页面的 UIPageViewController,每次我滚动到新页面时,内容都会稍微低于 top layout guide。但是当视图最终显示给用户/固定在中间时,它应该向下移动。

我在 storyboards 中使用 autolayout 来布置我的内容,并且我已经设置了 Top Space to Top Layout Guide: 5p

这似乎只有在使用 UIPageViewController 时才会发生 - 我通常不会遇到 AutoLayout 的这个问题,这不是我第一次遇到 pageview controller

有谁知道我该怎么做才能在将视图呈现给用户之前将其正确放置在顶部布局指南的下方,从而不会在呈现后立即跳转?

原来这是 iOS8 的问题,可以使用 Top Space to View 而不是 Top Layout guide 来解决。

我希望这对遇到同样问题的其他人有所帮助。

对于可能遇到此问题的其他人。我能找到的与此相关的最佳答案是在这个 SO 回复中,

[问题]iOS 8 UIPageViewController Applying Constraints After Transitions

这个问题是因为在 iOS 8 中默认的自动布局行为是对齐边距,而在以前的 iOS 版本中它是对齐视图边缘。在 pageviewcontroller 完成动画之后才计算边距,这就是导致视图跳转的原因。

不过,可以通过取消选择每个约束的对齐到边距来解决这个问题。希望这对任何人都有帮助。