UIScrollView子控件设置自动布局后不能滑动原因:
- 一般是由于与UIScrollView的依赖关系没设置好,导致contentSize虽然有值,但就是滑动不了。
UIScrollView的子控件并不是宽高和上下左右都需要设置
- 这里以往scrollView中添加两个控件的例子解析
- (void)viewWillAppear:(BOOL)animated
{
// 设置scrollView的大小和self.view一样大
UIScrollView *scrollView = [[UIScrollView alloc] init];
[self.view addSubview:scrollView];
[scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.view);
make.left.equalTo(self.view);
make.right.equalTo(self.view);
make.bottom.equalTo(self.view);
}];
UIImageView *imageView = [[UIImageView alloc] init];
// 往scrollView上添加一个UIImageView控件
[scrollView addSubview:imageView];
imageView.image = [UIImage imageNamed:@"01.jpg"];
// 设置imageView的约束
[imageView mas_makeConstraints:^(MASConstraintMaker *make) {
// 设置高度等于父控件scrollView的高度
make.height.equalTo(scrollView).multipliedBy(1.5);
// 设置宽度等于父控件scrollView的宽度
make.width.equalTo(scrollView);
// 设置top约束,由于top和外部控件关联,所以scrollView无法上下滑动(如果把scrollView的
// contentSize看作是一个控件的话,则contentSize的y值已经固定,无法更改)
make.top.equalTo(self.view);
make.bottom.equalTo(scrollView);
make.left.equalTo(scrollView);
make.right.equalTo(scrollView);
}];
[scrollView layoutIfNeeded];
NSLog(@"%@", NSStringFromCGSize(scrollView.contentSize));
}
打印结果:
{621, 1104}