AutoLayout 在出现时自动更新位置
Posted
技术标签:
【中文标题】AutoLayout 在出现时自动更新位置【英文标题】:AutoLayout updates positions automatically when presented 【发布时间】:2015-01-14 03:40:22 【问题描述】:我有一个包含多个页面的UIPageViewController
,每次滚动到新页面时,内容都会略低于top layout guide
。但是当视图最终显示给用户/位于中间时,它会向下移动。
我在storyboards
中使用autolayout
来布置我的内容,并且我设置了Top Space to Top Layout Guide: 5p
。
这似乎只在使用UIPageViewController
时发生——我通常在AutoLayout
上没有这个问题,这不是我第一次使用pageview controller
。
有谁知道我可以做什么,以便在将视图呈现给用户之前将其正确放置在顶部布局指南下,因此它不会在呈现后立即跳转?
【问题讨论】:
【参考方案1】:原来这是 iOS8 的问题,可以通过使用Top Space to View
而不是Top Layout guide
来解决。
我希望这对遇到相同问题的其他人有所帮助。
【讨论】:
【参考方案2】:对于可能遇到此问题的其他人。我能找到与此相关的最佳答案是在这个 SO 响应中,
[问题]ios 8 UIPageViewController Applying Constraints After Transitions
这个问题是因为在 iOS 8 中默认的自动布局行为是对齐到边距,而在之前的 iOS 版本中它是对齐视图边缘。直到 pageviewcontroller 完成动画后才会计算边距,这就是导致视图跳跃的原因。
但是,可以通过取消选择每个约束的对齐到边距来修复它。希望这对任何人都有帮助。
【讨论】:
以上是关于AutoLayout 在出现时自动更新位置的主要内容,如果未能解决你的问题,请参考以下文章
使用 AutoLayout 更新 UITableViewCell 子视图的框架