我尝试了很多解决方案,但无法通过它的子视图来调整UIScrollView的大小。
错误:
(
"<NSLayoutConstraint:0x16e71240 V:[RouteView:0x16d76fd0]-(10)-[RouteView:0x16e6fbb0]>",
"<NSLayoutConstraint:0x16e71270 V:[RouteView:0x16e6fbb0(150)]>",
"<NSLayoutConstraint:0x16d78710 V:[RouteView:0x16e6fbb0]-(10)-[RouteView:0x16e702c0]>",
"<NSLayoutConstraint:0x16e71190 V:[RouteView:0x16e702c0(150)]>",
"<NSLayoutConstraint:0x16d78810 V:[RouteView:0x16e702c0]-(10)-[RouteView:0x16e70700]>",
"<NSLayoutConstraint:0x16e713e0 V:[RouteView:0x16e70700(150)]>",
"<NSLayoutConstraint:0x16d78900 V:[RouteView:0x16e70700]-(0)-| (Names: '|':UIView:0x16e6da80 )>",
"<NSLayoutConstraint:0x16e71030 V:[UIView:0x16e6da80]-(10)-[RouteView:0x16d76fd0]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x16d78810 V:[RouteView:0x16e702c0]-(10)-[RouteView:0x16e70700]>
我的等级:
Class UIView contains
--UIScrollView
--mainViewOfScroller
----10-----------10
----|------------|
----UIView-10-UIView
----|------------|
----10-----------10
----|------------|
----UIView-10-UIView
………
我做了什么:
1。对于scroller(UIScrollView)的所有子视图,我设置了translatesAutoresizingMaskIntoConstraints = NO
2。将卷轴高度设置为自我的宽度和高度的最大值(自我是类UIView,它是主要的UIView)
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scroller]|" options:0 metrics: 0 views:views]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scroller]|" options:0 metrics: 0 views:views]];
3。将mainViewOfScroller设置为max by width(而不是按高度调整大小)
[scroller addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:| [mainViewOfScroller(==scroller)]|" options:0 metrics:0 views:views]];
4。然后我想将mainViewOfScroller的底部固定为mainViewOfScroller.subviews.lastObject的底部
[scroller addConstraint:[NSLayoutConstraint constraintWithItem:mainViewOfScroller attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:mainViewOfScroller.subviews.lastObject attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0]];
答案 0 :(得分:1)
在这样的滚动视图中使用自动布局时,需要对其进行设置,以使其中的每个视图都扩展其父视图。由于其contentSize,滚动视图的工作方式略有不同。这是在苹果开发人员论坛上提出的,我做了一个示例项目,展示了所使用的约束。它使用的是故事板,但我认为它可以帮助你。
https://github.com/ketzusaka/ScrollingWithConstraints
此处的目标是让第一级子视图能够展开滚动视图。例如,如果滚动视图中有两个子视图,则希望顶部视图在其超级视图的左侧,顶部和右侧具有约束。底部应该对其超视图的左侧,底部和右侧有约束。然后他们应该彼此相关,这样他们就会“堆叠”在一起。最后,您需要确保它们中的每一个都具有一定的大小以使它们扩展,可能是内在的内容大小调整或更多约束。我不会有任何子视图说他们的宽度与滚动视图有关;只有将它们固定到边缘并让子视图驱动滚动视图的大小。
Apple也有一份技术文件:
https://developer.apple.com/library/ios/technotes/tn2154/_index.html
最后,这是苹果开发论坛的帖子:
祝你好运!