原理
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);//這個不能忘記 }];