美文网首页
Masonry如何设置UIScrollView的ContentS

Masonry如何设置UIScrollView的ContentS

作者: 搬砖的作家 | 来源:发表于2023-07-13 16:26 被阅读0次

UIScrollView及其子类控件在iOS中的UI开发中最常用也是需要重点掌握的一个控件。随着项目需求中界面样式的丰富,使用单个UIScrollView或子类控件已经很难完成复杂界面的构建,往往需要多个UIScrollView来嵌套完成。在新闻、购物等APP中,我们经常会看到多个UIScrollView嵌套的身影。并且由于UIScrollView跟普通的UIView有一些区别,功能上他可以上下和左右滑动,从实现上来说他多了一个需要计算的ContentSize属性,所以使用起来就有一些难度。特别是在Masonry这种约束布局的场景下,大多数都会觉得比较困难。

方案一(简单版)

先来说一下实现的大体步骤:

  1. 设置 scrollView 的约束

  2. 约束上下左右间距为 0

  3. 创建一个 contentView ,设置 contentView 的约束上下左右间距为 0
    宽度和 scrollView 的父视图相等
    高度和 scrollView 的父视图相等,且优先级要低(这一步很重要,千万不要写错)

  4. 将所有子控件添加到 contentView (而不是直接添加到 scrollView 上),并设置好子控件的内部约束

方案二

- (void)viewDidLoad {
    [super viewDidLoad];
    
    _containerScrollView = [[UIScrollView alloc] init];
    _containerScrollView.backgroundColor = [UIColor yellowColor];
    _containerScrollView.pagingEnabled = YES;
    [self.view addSubview:_containerScrollView];
    [_containerScrollView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.mas_equalTo(_containerScrollView.superview);
    }];
    
    _view1 = [[UIView alloc] init];
    _view1.backgroundColor = [UIColor redColor];
    [_containerScrollView addSubview:_view1];
    [_view1 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.top.bottom.mas_equalTo(_containerScrollView);
        make.width.height.mas_equalTo(_containerScrollView);
    }];
    
    _view2 = [[UIView alloc] init];
    _view2.backgroundColor = [UIColor blueColor];
    [_containerScrollView addSubview:_view2];
    [_view2 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.right.bottom.mas_equalTo(_containerScrollView);
        make.width.height.mas_equalTo(_containerScrollView);
        make.left.mas_equalTo(_view1.mas_right);
    }];
}

相关文章

网友评论

      本文标题:Masonry如何设置UIScrollView的ContentS

      本文链接:https://www.haomeiwen.com/subject/opmmudtx.html