一套代码解决ios的所有界面适配问题
2016-12-02 14:39
435 查看
在苹果推出iPhone6Plus后,苹果的机型增多,显示屏的大小也变得多样,因此之前的绝对布局的方法难以满足手机的适配问题,因此苹果推出了相对布局的界面适配方法,本文所讲的界面适配方法主要基于masonry的适配方法,如果不懂masonry得界面布局方法,请先移步
http://www.cocoachina.com/ios/20141219/10702.html
1.界面分析:苹果自4s至7,大概以下几种尺寸
http://blog.csdn.net/phunxm/article/details/42174937/
大致有320x480,320x568,375x667,414x736这四种尺寸,我们发现这四种尺寸宽和高既不相等,也不成比例,因此在做设计的时候如果只以一种机型为标准,那么就会出现在别的机型控件的显示问题,因此只要考虑小机型超出屏幕的部分能够显示出来,那么就可以解决所有界面的适配问题。
我们考虑用scrollview加载试图,那么小的屏幕的手机就可以通过scrollview滑动将试图展现出来,如下图:
2.尺寸统一
在这四种机型中,我们只关注手机的宽高比例,只要做到在各种机型中宽高比例一致,那么就可以实现机型的统一,我们发现在这种尺寸中宽高比例分别为0.67,0.56,0.56,0.56,我们发现后面3中机型比例大体一致,我们解决的方法采用uiscrollview,增加屏幕显示的空间,从而实现界面的宽高比例一致,在masonry中的用法中的中级用法中可以自动的计算出contentSize,因此我们在做界面的时候可以在整个selv.view上面利用masonry放入一个scrollview,在超出屏幕的控件采用scrollview也可以显示在界面上,因此可以把界面上的控件添加到scrollview上面,从而实现所有的界面适配(这种方法也可以实现在ipad上面的适配),现附上代码,仅供参考
- (void) viewDidLoad
{
[superviewDidLoad];
self.automaticallyAdjustsScrollViewInsets =NO;
self.scrollView=[[UIScrollView alloc]init];
[self.view addSubview:self.scrollView];
[self.scrollView mas_makeConstraints:^(MASConstraintMaker
*make) {
make.top.and.left.and.right.equalTo(self.view);
make.bottom.equalTo(self.view).offset(-10);
}];
self.scrollView.alwaysBounceVertical=YES;
self.scrollView.scrollEnabled=YES;
self.scrollView.showsVerticalScrollIndicator=NO;
self.viewContent=[[UIView alloc]init];
[self.scrollView addSubview:self.viewContent];
[self.viewContent mas_makeConstraints:^(MASConstraintMaker
*make) {
make.edges.equalTo(self.scrollView);
make.width.equalTo(self.scrollView);
}];
[self createView:self.viewContent];
if (self.viewContent.subviews.count>0){
[self.viewContentmas_makeConstraints:^(MASConstraintMaker
*make) {
make.bottom.equalTo(self.viewContent.subviews.lastObject).offset(10);
}];
}
}
- (void) createView:(UIView*)contentView
{
}
控件添加到contentView上面,如有不懂,可以发疑问至1456661057@qq.com
demo 地址:https://github.com/changcongcong/CCInterfaceAdaptation ,求点赞
http://www.cocoachina.com/ios/20141219/10702.html
1.界面分析:苹果自4s至7,大概以下几种尺寸
http://blog.csdn.net/phunxm/article/details/42174937/
大致有320x480,320x568,375x667,414x736这四种尺寸,我们发现这四种尺寸宽和高既不相等,也不成比例,因此在做设计的时候如果只以一种机型为标准,那么就会出现在别的机型控件的显示问题,因此只要考虑小机型超出屏幕的部分能够显示出来,那么就可以解决所有界面的适配问题。
我们考虑用scrollview加载试图,那么小的屏幕的手机就可以通过scrollview滑动将试图展现出来,如下图:
2.尺寸统一
在这四种机型中,我们只关注手机的宽高比例,只要做到在各种机型中宽高比例一致,那么就可以实现机型的统一,我们发现在这种尺寸中宽高比例分别为0.67,0.56,0.56,0.56,我们发现后面3中机型比例大体一致,我们解决的方法采用uiscrollview,增加屏幕显示的空间,从而实现界面的宽高比例一致,在masonry中的用法中的中级用法中可以自动的计算出contentSize,因此我们在做界面的时候可以在整个selv.view上面利用masonry放入一个scrollview,在超出屏幕的控件采用scrollview也可以显示在界面上,因此可以把界面上的控件添加到scrollview上面,从而实现所有的界面适配(这种方法也可以实现在ipad上面的适配),现附上代码,仅供参考
- (void) viewDidLoad
{
[superviewDidLoad];
self.automaticallyAdjustsScrollViewInsets =NO;
self.scrollView=[[UIScrollView alloc]init];
[self.view addSubview:self.scrollView];
[self.scrollView mas_makeConstraints:^(MASConstraintMaker
*make) {
make.top.and.left.and.right.equalTo(self.view);
make.bottom.equalTo(self.view).offset(-10);
}];
self.scrollView.alwaysBounceVertical=YES;
self.scrollView.scrollEnabled=YES;
self.scrollView.showsVerticalScrollIndicator=NO;
self.viewContent=[[UIView alloc]init];
[self.scrollView addSubview:self.viewContent];
[self.viewContent mas_makeConstraints:^(MASConstraintMaker
*make) {
make.edges.equalTo(self.scrollView);
make.width.equalTo(self.scrollView);
}];
[self createView:self.viewContent];
if (self.viewContent.subviews.count>0){
[self.viewContentmas_makeConstraints:^(MASConstraintMaker
*make) {
make.bottom.equalTo(self.viewContent.subviews.lastObject).offset(10);
}];
}
}
- (void) createView:(UIView*)contentView
{
}
控件添加到contentView上面,如有不懂,可以发疑问至1456661057@qq.com
demo 地址:https://github.com/changcongcong/CCInterfaceAdaptation ,求点赞
相关文章推荐
- IOS 解决 IOS 7 界面 混乱问题 --- 在某些界面问题解决不了时可以加上这段代码试试
- iOS --- 解决RESideMenu中所有界面都能侧滑的问题
- iOS一套代码适配所有iPhone手机布局实现方案
- 解决 iOS 老代码 屏幕不适配问题
- iOS 中C如何调用Objective c的代码更新界面问题解决
- ios界面跳转问题,两种方式解决
- iOS 7:用代码解决视图控制器的View整体上移问题
- iOS重新定义系统自带的方法,如 重定义 CGRectMake 和 CGPointMake 可以解决屏幕适配的问题
- java清除所有微博短链接 Java问题通用解决代码
- iOS重新设置首界面不能启动问题的解决方法
- 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
- 五行代码终极完美解决从IE6到Chrome所有浏览器的position:fixed;以及闪动问题
- 解决在iOS开发的代码中实现scp的ssh远程连接,怎么输入密码问题
- 五行代码终极完美解决从IE6到Chrome所有浏览器的position:fixed;以及闪动问题
- iOS 7:用代码解决视图控制器的View整体上移问题
- iOS开发屏幕适配问题解决方案
- iOS 7:用代码解决视图控制器的View整体上移问题
- iOS 7:用代码解决视图控制器的View整体上移问题
- 关于适配iOS9.0 问题 报错解决
- ios - 解决XCode6在IOS7系统上出现部分黑屏与不适配问题