原理
scrollView的高度(縱向滑動時)時靠內部的子控件撐起來的。我們直接給ScrollView布局會發現失敗。用層級檢查器發現,ScrollVIiw的高度有問題,我們可以選擇添加一個UIView容器,約束容器的edge.equalTo(self.scrollView),和 containerView.height.mas_equalTo(self.scrollView);
往這個容器中添加控件,所有子空間相對於容器布局。
最后一個控件不要忘記 添加一個 和 容器底部的約束。否則 容器的高度是0, 里面所有的控件都無法響應手勢了。因為 容器的size為0時,手勢做坐標轉換時響應鏈到達控制器時不是原來的期望的坐標了。
而且高度為0 的控件本來就是不因該存在的。
//
[self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.view).offset(kNaviHeight);
make.left.right.bottom.equalTo(self.view);
make.width.mas_equalTo(kScreenW);
make.height.mas_equalTo(kScreenH -(kNavHeight);
}];
//容器
[self.scrollView addSubview:self.conatinerView];
[self.conatinerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.scrollView);
make.width.equalTo(self.scrollView);
}];
[self.subView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.someChildView.mas_bottom);
make.left.right.equalTo(self.conatinerView);//左右約束
make.height.mas_equalTo(kOneLineItemHeight);
make.bottom.equalTo(self.conatinerView);//這個不能忘記
}];