Masonry 佈局 scrollView

原理
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);//這個不能忘記
}];
相關文章
相關標籤/搜索