iOS 8 top layout guide自动布局问题

标签 ios iphone autolayout ios8

当更新到 iOS 8 SDK 时,我的应用程序中的一个屏幕完全崩溃了。 问题似乎是顶部布局指南向上移动,而不是成为其余 View 的“ anchor ”。

这是 iOS 7 上的 View :

iOS 7 Screen

这是它在 iOS 8 中的样子(从 Xcode 6 View Hierarchy 调试器捕获):

iOS 7 Screen

如您所见, View 显示在导航栏上方。 top layout guide 有两个约束,一个是针对上面的image view,一个是针对下面的white view。 底部布局指南没有限制,只有 View 的高度限制。

出于某种原因,iOS 8 决定将顶部布局指南推送到 {0 -255; 0 0}[self.view layoutIfNeeded] 第一次被调用之后。 此外, View 的边界有时对于设备而言显得太大(即显示完全与统一 Storyboard (600x600) 中的一样,而不是 320x480/320x568。

iOS 8 中有哪些变化可能会搞砸布局?

[编辑] 以下是 View 约束的完整列表:

(lldb) po self.view.constraints
<__NSArrayM 0x786ac520>(
    <NSLayoutConstraint:0x7c377bd0 V:[_UILayoutGuide:0x7c372f60]-(0)-[UIView:0x7c373120]>,
    <NSLayoutConstraint:0x7c377c00 UIView:0x7c373120.width == UIView:0x7c3730b0.width>,
    <NSLayoutConstraint:0x7c377c30 UIView:0x7c3730b0.centerX == UIView:0x7c373120.centerX>,
    <NSLayoutConstraint:0x7c377c60 H:|-(0)-[UIView:0x7c3716f0]   (Names: '|':UIView:0x7c3730b0 )>,
    <NSLayoutConstraint:0x7c377c90 UIView:0x7c3716f0.width == UIView:0x7c3730b0.width>,
    <NSLayoutConstraint:0x7c372f30 V:[_UILayoutGuide:0x7c372f60]-(129)-[UIView:0x7c3716f0]>
)

最佳答案

Extend Edges > Under Top Bars 在 Attribute Inspector 的 Extend Edges 部分默认选中。

尝试取消选中 Under Top Bars

当我遇到这种奇怪的行为时,这对我有很多帮助。

请注意这是一个 UIViewController 属性,因此您可以根据需要在代码中设置它。

Under Top Bars option in Interface Builder

关于iOS 8 top layout guide自动布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25964076/

相关文章:

ios - UITableView:单击其中的按钮时如何动态更改单元格高度?

ios - 用于捕获 UIElements 通知的自定义 UITableViewCell 的最佳实践

iphone - 如何在 iPhone 中访问收件箱消息

ios - 如何将边缘设置为零?

iphone - 使用 Unity for iPhone 进行游戏开发

iphone - iOS - iphone/ipad 版本控制

ios - 在 UIScrollView 中以编程方式调整 UITableView 的大小并避免 AutoLayout 约束

ios - Flash 中的动画到 IOS

objective-c - 保留在 [NSDate distinctPast] 崩溃...有时

ios - 使用 NSObject 确定挂起的操作