使用Masonry库写scrollView的布局,内部的布局约束必须明确。例如,在View1中批量创建ImageView。View1的底部约束或者View1的高度必须给定一个,不然scrollView的contentSize会计算不精确致使scrollView不能滚动。
-(void)creatImageView{
if (_imageArray && [_imageArray count]>0) {
__block UIImageView *lastImageView;
[self.view addSubview:lastImageView];
[_imageArray enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSInteger row =idx/3;
NSInteger column =idx%3;
UIImageView *imageView =[[UIImageView alloc]init];
[imageView setImage:[UIImage imageNamed:obj]];
[imageView setTag:imageViewTag+idx];
[_backImageView addSubview:imageView];
[imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(imageViewWidth, imageViewWidth));
if (row ==0) {
make.top.equalTo(_backImageView).offset(topMargin);
if (column ==0) {
make.left.equalTo(_backImageView).offset(leftMargin);
}else
{
make.left.equalTo(lastImageView.mas_right).offset(edgeMargin);
}
}else{
if (column ==0) {
make.left.equalTo(_backImageView).offset(leftMargin);
make.top.equalTo(lastImageView.mas_bottom).offset(edgeMargin);
}else{
make.left.equalTo(lastImageView.mas_right).offset(edgeMargin);
make.top.equalTo(lastImageView);
}
}
if (idx ==[_imageArray count]-1) {
make.bottom.equalTo(_backImageView).offset(-topMargin);
}
}];
lastImageView =imageView;
}];
}
}
#pragma mark - Layout Methods
-(void)updateViewConstraints{
__weak typeof(self)weakSelf =self;
[_scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(weakSelf.view);
}];
[_contentLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(weakSelf.view).offset(leftMargin);
make.right.equalTo(weakSelf.view).offset(-leftMargin);
make.top.equalTo(_scrollView).offset(topMargin);
}];
[_backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(weakSelf.view);
make.top.equalTo(_contentLabel.mas_bottom).offset(topMargin);
make.bottom.equalTo(_scrollView);
}];
[super updateViewConstraints];
}