使用Masonry过程中设置ScrollView的滑动范围

很多时候,我们需要使用ScrollView来作为底层View,来使整个界面能够滑动显示.使用Frame来设置各控件的坐标时,很简单,直接用ScrollView的ContentSize属性就可以设置其滑动范围,但是使用Masonry的时候 ,这个方法就不行了,此时,我们需要给ScrollView上加一层containerView,将各个控件都加在containerView上,然后根据最后一个控件的的位置来设置containerView的底部约束就可以了.废话不多说,贴一下代码:

1.先创建一个ScrollView

self.baseView = [[UIScrollView alloc] init];
self.baseView.backgroundColor = [UIColor clearColor];
self.baseView.delegate = self;
self.baseView.showsVerticalScrollIndicator = NO;
[self.view addSubview:self.baseView];
[self.baseView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.mas_equalTo(self.view);
}];

2.在ScrollView上添加一个containerView

UIView *containerView = [UIView new];
[self.baseView addSubview:containerView];
[containerView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.mas_equalTo(self.baseView);
    make.width.mas_equalTo(self.baseView);
}];

3.将需要展示的控件添加在containerView上(此处只是示例代码)

UIView *segementView1 = [[UIView alloc] init];
segementView1.backgroundColor = COLOR_BACKVIEW_GRAY;
[containerView addSubview:segementView1];
[segementView1 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.mas_equalTo(containerView.mas_top).offset(topHeight);
    make.left.mas_equalTo(containerView.mas_left).offset(0);
    make.right.mas_equalTo(containerView.mas_right).offset(0);
    make.height.mas_equalTo(8);
}];

UILabel *paytimeTipLab = [[UILabel alloc] init];
paytimeTipLab.textColor = COLOR_FONT_BLACK;
paytimeTipLab.text = @"支付剩余时间";
paytimeTipLab.textAlignment = NSTextAlignmentCenter;
paytimeTipLab.font = FONT_12;
[containerView addSubview:paytimeTipLab];
[paytimeTipLab mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.mas_equalTo(segementView1.mas_bottom).offset(34);
    make.left.mas_equalTo(containerView.mas_left).offset(0);
    make.right.mas_equalTo(containerView.mas_right).offset(0);
    make.height.mas_equalTo(20);
}];

UILabel *paytimeLab = [[UILabel alloc] init];
paytimeLab.textAlignment = NSTextAlignmentCenter;
paytimeLab.textColor = COLOR_FONT_GRAY;
paytimeLab.font = FONT_20;
paytimeLab.text = format_time;
[containerView addSubview:paytimeLab];
self.paytimeLab = paytimeLab;
[paytimeLab mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.mas_equalTo(paytimeTipLab.mas_bottom).offset(20);
    make.left.mas_equalTo(containerView.mas_left).offset(0);
    make.right.mas_equalTo(containerView.mas_right).offset(0);
    make.height.mas_equalTo(30);
}];

UIView *segementView2 = [[UIView alloc] init];
segementView2.backgroundColor = COLOR_BACKVIEW_GRAY;
[containerView addSubview:segementView2];
[segementView2 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.mas_equalTo(paytimeLab.mas_bottom).offset(34);
    make.left.mas_equalTo(containerView.mas_left).offset(0);
    make.right.mas_equalTo(containerView.mas_right).offset(0);
    make.height.mas_equalTo(8);
}];

4.最后一步,设置一下containerView的底部约束即可(这里放最后一个控件的底部)

[containerView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.bottom.mas_equalTo(segementView2.mas_bottom).offset(200);
}];

好了,这样就可以确定ScrollView的滑动范围了,希望可以给初始使用Masonry的同学一些帮助.测试的时候可以在containerView上多添加一些控件,这样会效果会更直观.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,705评论 4 61
  • 作为一个典型的中国人,我是不相上帝的,为什么典型的中国人是不相信上帝的呢? 在中国的传统文化中,只有那些做为中华民...
    陈潇丝阅读 1,630评论 0 0
  • 谨以此文 纪念曾经的校园时光 纪念我们逝去的青春 那段呼啸着青春的围墙 斑驳的记忆被岁月拉长 醉在花阴里的笑颜 是...
    爷少寒阅读 1,783评论 0 1
  • 佳 好多话想说,可又不知从何说起。 记得第一次见面,在火车上,本想制造点惊喜,可还是有点尴尬。 你说要吃三只...
    云边小孩阅读 1,301评论 0 0
  • 我们每个人都会有情绪低落的时候,当低落的情绪像潮水一样袭来,真的是挡也挡不住,这可肿么破呢?每当这个时候,作为患者...
    手帐研究室阅读 13,678评论 28 352

友情链接更多精彩内容