所以这个自动输出错误。我知道它为什么在那里,但我不知道我怎么能修好它。与错误一样,它显然无法解决这些约束。在纵向模式下,所有47集都被列出,可以滚动到。但在景观模式下,这是不可能的,这是明确的,因为高度的桌子是没有改变的方式,它仍然在那里,但不能滚动到它。


所以我就是这么安排的。

其中as视图控制器有两个用作占位符的视图,上面是iAds的,下面是持有表的视图。这个主意是幕后黑手。如果广告没有加载,我将将视图的高度设置为零,这将容纳iADBanner。所以表视图占用了所有的空间。(这是雷·温德利希的应用程序给我提出来的。)我最初是挣扎于自动布局,但我做了正确的,所以当sim进入纵向模式时,这个视图占据了全部宽度。但不知何故,我无法确定持有tableView的视图的高度。下面是约束的屏幕截图。


我尽我所能来描述。但我想要的不仅仅是答案。我想完全了解这一点,这样以后我很可能就不会有问题了。我已经完成了raywenderlich的教程。因此,任何其他指针都将与答案一起受到极大的赞赏。
2014-07-30 21:40:37.326 Test[85608:60b] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) (
"<NSLayoutConstraint:0xa5afbc0 UIView:0xa69b7d0.width == 0.682303*UIView:0xa69b830.height>",
"<NSLayoutConstraint:0xa5afc80 V:|-(50)-[UIView:0xa69b830] (Names: '|':UIView:0xa69b7d0 )>",
"<NSLayoutConstraint:0xa5afdc0 V:[UIView:0xa69b830]-(0)-[_UILayoutGuide:0xa5a8410]>",
"<_UILayoutSupportConstraint:0xa5a7d20 V:[_UILayoutGuide:0xa5a8410(0)]>",
"<_UILayoutSupportConstraint:0xa5af490 _UILayoutGuide:0xa5a8410.bottom == UIView:0xa69b7d0.bottom>",
"<NSAutoresizingMaskLayoutConstraint:0xa792d10 h=--& v=--& H:[UIView:0xa69b7d0(480)]>",
"<NSAutoresizingMaskLayoutConstraint:0xa792dd0 h=--& v=--& V:[UIView:0xa69b7d0(271)]>" )
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xa5afdc0 V:[UIView:0xa69b830]-(0)-[_UILayoutGuide:0xa5a8410]>
Break on objc_exception_throw to catch this in the debugger. The
methods in the UIConstraintBasedLayoutDebugging category on UIView
listed in <UIKit/UIView.h> may also be helpful.发布于 2014-07-31 05:13:52
错误日志中的约束列表是理解此类问题的关键。您要做的是仔细查看它,以关联哪些行引用代码/ui构建器中的哪些约束,以及哪个十六进制地址引用哪个视图。
V:[UIView:0xa69b830]-(0)-[_UILayoutGuide:0xa5a8410]是一个将UIView底部设置为布局指南的约束,所以这很可能是截图“垂直空间底部布局指南-TableVi.”中的最后一个约束。(大概是TableViewHolder截断了)。这意味着UIView:0xa69b830是你的TableViewHolder。V:|-(50)-[UIView:0xa69b830] (Names: '|':UIView:0xa69b7d0 )是从其superview绑定TableViewHolder 50 be顶部的约束,必须是UIView:0xa69b7d0。UIView:0xa69b7d0.width == 0.682303*UIView:0xa69b830.height看起来像是超级视图宽度和TableViewHolder高度之间的高宽比约束。h=--& v=--& H:[UIView:0xa69b7d0(480)]和h=--& v=--& V:[UIView:0xa69b7d0(271)]是从其autoresizingMask派生的超级视图上的约束,其中width=480px、height=271px以及它们的顶/左/宽/高是固定的(基于h=--& v=--&)。这是一个视图控制器的根视图的标准设置-它的尺寸由视图控制器手动管理以填充屏幕。因此,一旦有了所有这些,您就可以看到问题所在: superview有固定的维度480x271。同时,TableViewHolder的高度是由多个相互冲突的约束决定的:
有些东西是必须给予的,而操作系统恰好选择#1,所以TableViewHolder的底部延伸到布局指南的底部,使得它突出在屏幕的边缘,无法访问。
您的解决方案可能涉及消除高宽比约束,但一旦修复,可能还会出现其他问题。祝好运!
https://stackoverflow.com/questions/25050720
复制相似问题