1、学系统UITableView处理增加包装器wrapperView
@property (nonatomic, strong) UIView *wrapperView;
2、所有需要添加到UIScrollView页面上,改为添加到wrapperView上
//添加页面
[self.view addSubview:self.scrollView];
[self.scrollView addSubview:self.wrapperView];
[self.wrapperView addSubview:view1];
[self.wrapperView addSubview:view2];
...
//布局
self.scrollView.sd_layout.spaceToSuperView(UIEdgeInsetsZero);
self.wrapperView.sd_layout
.leftEqualToView(self.scrollView)
.topEqualToView(self.scrollView)
.rightEqualToView(self.scrollView);
self.view1.sd_layout
.leftSpaceToView(self.wrapperView, 16)
.topSpaceToView(self.wrapperView, 8)
.rightSpaceToView(self.wrapperView, 16)
.height(50);
self.view2.sd_layout
.leftSpaceToView(self.wrapperView, 16)
.topSpaceToView(self.view1, 8)
.rightSpaceToView(self.wrapperView, 16)
.height(50);
[self.wrapperView setupAutoHeightWithBottomView:self.view2 bottomMargin:0];
[self.scrollView setupAutoContentSizeWithBottomView:self.wrapperView bottomMargin:0];
3、滚动事件处理
#pragma mark - UIScrollViewDelegate
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
// 由于scrollview在滚动时会不断调用layoutSubvies方法,这就会不断触发自动布局计算,而很多时候这种计算是不必要的,所以可以通过控制“sd_closeAutoLayout”属性来设置要不要触发自动布局计算
self.wrapperView.sd_closeAutoLayout = YES;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
// 由于scrollview在滚动时会不断调用layoutSubvies方法,这就会不断触发自动布局计算,而很多时候这种计算是不必要的,所以可以通过控制“sd_closeAutoLayout”属性来设置要不要触发自动布局计算
self.wrapperView.sd_closeAutoLayout = NO;
}
网友评论