objective-c - iOS开发中 --> 关于使用Masonry去自适应ScrollView滚动视图内容的一些疑问!!!
怪我咯
怪我咯 2017-04-18 09:29:46
0
3
453
  • 一般滚动视图ScrollView上下滑动式,使用Masonry可以去自适应内容大小,只要在最后一个控件后面增加一些ScrollView的约束即可,比如:

[_personCenterScrollView makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(weakSelf.view);
        make.bottom.mas_equalTo(_EquipmentView.bottom).with.offset(5*Padding);
    }];

这样就可以去自适应ScrollView内容多少,有多少都不怕。

2.问题来了:

  • 我想横向使用ScrollView那么我的内容是否也可以自适应-->(这个问题我整不出来,呜~~)

  • 纵向使用ScrollView时用到 bottom 这个限制属性去约束ScrollView的内容,那么横向我是否可以使用 right 这个显示属性去约束ScrollView的内容呢?

[_personCenterScrollView makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(weakSelf.view);
        make.right.mas_equalTo(_EquipmentView.right).with.offset(5*Padding);
    }];

我现在没整出来,我考虑过一些原因:

  • 使用self.view去限制滚动视图中 控件 的左右边距;

  • 我的Masnory版本太低了,没有更高的版本;

  • 最后恳亲大家帮忙,这个问题困扰我好久了。

怪我咯
怪我咯

走同样的路,发现不同的人生

Antworte allen(3)
伊谢尔伦

首先、sv使用约束的时候,要确定内部控件的大小(约束)然后还要确定内部控件与sv的边距关系。

例如:一个view在sv里,先把view与sv的边距确定了,再确定view的宽高。

如果有多个view并排。 你就把view们的宽高,边距都确定了

阿神

横向和纵向写法都是类似的,你上边两句Masnory的语法应该没有问题,你找一下是不是别的原因,感觉不应该是版本问题,不过你可以更新下试试。

迷茫
参考一下下面的写法:
self.automaticallyAdjustsScrollViewInsets = NO;
__weak __typeof(self) weakSelf = self;
UIView *sv = [UIView new];
sv.backgroundColor = [UIColor blackColor];
[self.view addSubview:sv];
[sv mas_makeConstraints:^(MASConstraintMaker *make) {
    make.center.equalTo(weakSelf.view);
    make.size.mas_equalTo(CGSizeMake(300, 300));
}];

UIScrollView *scrollView = [UIScrollView new];
scrollView.backgroundColor = [UIColor whiteColor];
[sv addSubview:scrollView];

[scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(sv).insets(UIEdgeInsetsMake(5, 5, 5, 5));
}];
UIView *container = [UIView new];
[scrollView addSubview:container];

[container mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(scrollView);
    make.height.equalTo(scrollView);
}];

int count = 10;
UIView *lastView = nil;
for (int i = 1; i < count; i++) {
    UIView *subV = [UIView new];
    [container addSubview:subV];
    subV.backgroundColor = [UIColor colorWithRed:(arc4random() % 256 / 256.0)
                                           green:(arc4random() % 256 / 256.0)
                                            blue:(arc4random() % 256 / 256.0)
                                           alpha:1];
    [subV mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.bottom.equalTo(container);
        make.width.mas_equalTo(20 * i);
        if (lastView) {
            make.left.mas_equalTo(lastView.mas_right);
        }else{
            make.left.mas_equalTo(container.mas_left);
        }
    }];
    
    lastView = subV;
}
[container mas_updateConstraints:^(MASConstraintMaker *make) {
    make.right.mas_equalTo(lastView.mas_right);
}];
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage