关于iPhone设备不同显示尺寸适配的一些方法
关于iPhone设备不同显示尺寸适配的一些方法
------关于适配的理解------
1、什么是适配?
适配是对不同硬件和系统软件的适应,硬件包括屏幕显示,处理器,内存等等(目前主要是屏幕适配,iPhone 6s新增了3D Touch功能,其他硬件功能并没有实质性的改变),软件主要是不同iOS系统(有些在最新系统(通常会尽量向下兼容)不再支持的方法都需要做一些判断)。
2、为什么要适配?
适配是为了兼容不同的设备。
3、屏幕适配主要有哪些方式?
(1)等比例适配(所有视图按屏幕大小缩放,相对位置不变):a、纯代码;b、代码+storyboard(不使用自动布局);c、代码+storyboard(使用自动布局)。
(2)自由适配(主要使用自动布局):由于同一布局在不同大小的屏幕上显示效果不一样,如果仅仅是等比缩放,有时显示效果差强人意;在显示内容尺寸符合操作习惯(这个看自己咋想)的情况下,屏幕大小最大的区别是屏大显示内容多(如浏览新闻等,除了只有一些固定图片、控件等的简洁界面),a、约束内容的间距及相对大小;b、约束内容的宽高及相对位置;c、约束内容的间距、宽高。
------适配的一些方法------
情况一
(等比适配,代码+storyboard,不使用自动布局,建议用iPhone6的尺寸布局),通过获取屏幕尺寸,重定义CGRectMake,更新所有视图及其子视图的frame,完成等比适配。注意字体、图片,以及tableView、collectionView。
1、——————AppDelegate.h添加:
+ (void)ergodicView:(UIView *)view;
2、——————AppDelegate.m添加:
#define ScreenHeight [UIScreen mainScreen].bounds.size.height
#define ScreenWidth [UIScreen mainScreen].bounds.size.width
#define ScreenScaleX (ScreenWidth/375)//相对于苹果6屏幕
#define ScreenScaleY (ScreenHeight/667)
//按屏幕自动适配storyBoard所有视图
+ (void)ergodicView:(UIView *)view{
if (view.subviews.count != 0) {
for (UIView *temp in view.subviews) {
temp.frame = CGRectMake1(temp.frame.origin.x, temp.frame.origin.y, temp.frame.size.width, temp.frame.size.height);
[self ergodicView:temp];
}
}
}
//修改CGRectMake
CG_INLINE CGRect
CGRectMake1(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = x * ScreenScaleX;
rect.origin.y = y * ScreenScaleY;
rect.size.width = width * ScreenScaleX;
rect.size.height = height * ScreenScaleY;
return rect;
}
--------------------
情况二
使用autolayout布局后,可重新设置视图的frame。等viewDidLoad加载完后,再延迟改变视图的frame,不延迟会被storyboard重新设置。也可以在viewDidLayoutSubviews或viewDidAppear重新设置frame
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2014-12-03 学习:java原理—反射机制
2014-12-03 BugFix系列---开篇介绍
2014-12-03 回调函数透彻理解Java
2014-12-03 Java回调函数的理解