iOS编程——简单的UI自动适配解决方案:Masonry
2015-08-04 15:13
555 查看
现在比较方便常用的UI适配方案大约以下两种了:
1.StoryBorad的话用Autolayout+SizeClass,可以适配各种屏幕尺寸和横竖屏。 刚开始可能比较慢,熟悉了以后还是挺快的。
2.纯代码的话就是用Masonry了,除了动画上可能有一些复杂,普通的UI适配还是很简单的。下面就通过代码了解下Masonry的常用方法:
Masonry的简介可以看这里:http://www.cocoachina.com/ios/20141219/10702.html
做项目时最经常遇到的情况:在UIViewController里通过Masonry来实现自动布局,当最后一个子视图超过controller.View高度时可以上下滚动。
1)导入Masonry的.h和.m文件,然后初始化一个UIViewController,在view上添加一个ScrollView
2)scrollView上添加一个容器View,把子视图都加到这个容器View上,通过它的高度来使ScrollView实现超出高度自动滚动。
3.向containerView添加各种子视图,比如添加一个label
再添加一个很高的label
4.设置containerView的mas_bottom
通过最后一步就可以使scrollView上下滚动了,比较简单的实现了布局。
1.StoryBorad的话用Autolayout+SizeClass,可以适配各种屏幕尺寸和横竖屏。 刚开始可能比较慢,熟悉了以后还是挺快的。
2.纯代码的话就是用Masonry了,除了动画上可能有一些复杂,普通的UI适配还是很简单的。下面就通过代码了解下Masonry的常用方法:
Masonry的简介可以看这里:http://www.cocoachina.com/ios/20141219/10702.html
做项目时最经常遇到的情况:在UIViewController里通过Masonry来实现自动布局,当最后一个子视图超过controller.View高度时可以上下滚动。
1)导入Masonry的.h和.m文件,然后初始化一个UIViewController,在view上添加一个ScrollView
UIScrollView *scrollView = [UIScrollView new]; scrollView.showsVerticalScrollIndicator = NO; [self.view addSubview:scrollView]; [scrollView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.view); make.bottom.equalTo(self.view); }];
2)scrollView上添加一个容器View,把子视图都加到这个容器View上,通过它的高度来使ScrollView实现超出高度自动滚动。
UIView *containerView = [UIView new]; containerView.backgroundColor = [UIColor clearColor]; [scrollView addSubview:containerView]; [containerView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(scrollView); make.width.equalTo(scrollView); }];
3.向containerView添加各种子视图,比如添加一个label
UILabel *label1 = [UILabel new]; [self.containerView addSubview:label1]; [label1 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.containerView.mas_top).offset(15); make.height.equalTo(30); make.left.equalTo(self.containerView).offset(15); make.right.equalTo(self.containerView).offset(-15); }];
再添加一个很高的label
UILabel *label2 = [UILabel new]; [self.containerView addSubview:label2]; [label2 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(label1.mas_bottom).offset(10); make.height.equalTo(1000);//超过当前view controller的高度 make.left.equalTo(label1); make.right.equalTo(label1); }];
4.设置containerView的mas_bottom
[containerView mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(label2.mas_bottom); }];
通过最后一步就可以使scrollView上下滚动了,比较简单的实现了布局。
相关文章推荐
- SQL server字段名中有数据类型为text时,adoquery->fieldbyname->asstring取不到全部值
- UITools
- UI_Stepper
- IOS开发之关于UIButton点击没有响应问题
- uva 10706 Number Sequence(数学)
- [置顶] 项目中requireJS的应用例子
- perf_events Frequently Asked Questions
- iOS学习笔记6- iOS UICollectionView简单使用
- The method build() is undefined for the type Notification.Builder
- (leetcode)Implement Stack using Queues
- iOS开发--UISwitch用法
- UITableView隐藏多余分割线
- 关于UITabelView的右侧Table
- UITableView中的headerView改变颜色
- 基于System V Message queue的PHP消息队列封装
- iOS UITextField总结
- iOS7加载富文本(UILabel)
- Ubuntu 开机出现 grub rescue> 终端模式修复方法
- UIImageJPEGRepresentation和UIImagePNGRepresentation
- UESTC 618 无平方因子数 (容斥 + 莫比乌斯反演)