主要的UIScrollView
有一个UIView
。我在scrollview中有容器UIView
,它的边缘固定在scrollview上。并且此容器视图具有常量width
和height
约束。因为没有它们滚动视图不起作用。
当我在容器视图中垂直添加大量子视图时,子视图超出了容器视图的底部边框。它不可滚动导致容器具有相同的预定义高度。如何使容器视图可调,以便它可以匹配子视图高度,使其可滚动。
还要考虑我使用的是autolayout
。
你真正需要做的是更新高度约束,对吗?
我会将内部视图的高度约束作为IBOutlet链接到ViewController:
@property (nonatomic, weak) IBOutlet NSLayoutConstraint *contentViewHeight;
然后,当您在内部添加子视图时,您需要通过调用该方法来更新Constraint的常量:
- (void)updateContentViewHeight:(CGFloat)height
{
self.contentViewHeight.constant = height;
[self.yourContentView layoutIfNeeded];
}
如果你可以跟踪整个子视图的高度,那太好了!你只需要将它传递给那个方法。
如果没有,它可能会有点棘手...您可能需要删除高度约束,将您的子视图一个下方添加(只要它们的高度是固定的),而不要忘记“固定”最后一个的底部边框子视图到“内部视图”的底部边框。换句话说,内部视图的高度不是固定的,而是通过其“高度固定”内容的总和来扩展。这样之后:
[self.yourContentView layoutIfNeeded];
它的“.frame”应该是它的最终高度
然后,您应该能够更新高度约束或设置滚动视图的内容大小,哪种方式最适合您。