如何让你的APP变小及手机各屏幕尺寸

简介: 如何让你的APP变小及手机各屏幕尺寸

《影响APP的大小的因素:

第一大因素:看你的APP页面采用的是storyboard,xib,代码那一种方式实现。你代码都是用storyboard实现的,那么的APP达到30M很正常,除非你的页面超少。若你的页面是都是用XIB实现的,你的APP达到20M以上也很正常。你采用纯storyboard或XIB,别抱怨你的APP安装包太大了,你也不看看他们每个文件有多大,接受现实吧。你想用他们的可见既可得,自动布局,快速开发功能,你还能对APP提太高的要求,你的想法有点过了。若你的页面全部是用代码写的恭喜你,你的包低于10M以下不在话下,除非你有大量声音文件和图片,第三方库,不然很难太大。但是你只有运行起来才能看效果,不能使用自动布局了,慢慢开发,自己一个一个的适配吧!注意代码实现页面和XIB,storyboard混用时不支持自动布局。那些要求APP在5M一下的标准找抽,没看到很多APP都直奔60M。

第二大因素:很大的声音文件,很多的声音文件。一个声音文件经常200K到1.5M之间,一个声音文件顶你一堆.M文件。在不影响效果的情况下还是低质量的声音文件代替吧,稍微降低下质量就降低几百K,顶你多少.M文件啊,并且别人还听不出区别。

第三大因素:大量使用第三方库。第三方库都很大,别怕,不像.M,storyboard,XIB,声音文件,图片文件不可以压缩,他很容易压缩的很消息在APP占用的并非恐怖的大。不再使用的第三方库尽量CUT了,别让他占地方。

第四大因素:应用中存在全屏图片页面。要在设计上避免。

你想现在苹果手机存在3.5英寸,4英寸,5英寸,5.5英寸,5.8英寸共5种尺寸,完美的适配手机你要有5种尺寸的图片,有的图片色彩复杂度很高,甚至一个图片可以达到1兆到2兆,这要折合成多少行代码啊?只所以设计上只需要提供2倍图和3倍图图标适配所有手机是因为图标大都相对于全屏尺寸比较少,大约忽略了他们相对于屏幕的差异。而全屏页面就不能简单的一张图包打天下了,会有失真的。

解决方案是:1.应用启动这样的图片资源可以通过文件流的方式一次性下载图片资源;2.应用启动时,根据图片地址下载图片;3.该页面换成h5页面;4. 把这样的页面拆解成小控件和简单背景,从设计上避免这样的页面。

第五大因素:大量图片。把那些以前在使用,现在不在使用的都删掉吧。你换图片是正常,你懒,得到新的不干掉旧的就是一种罪恶了。尽量别支持iPhone4早期版本的一倍图,不然你的图片又要增加三分之一,他们是小门小户就将就着用2倍图吧,不然1倍图,2倍图,3倍图那要3类相同的图片了。现在很多APP都用引导页面滑动动画页面,他们的图片都是超级打的一个顶好多图片那么大。

iphont4,iphont4s是用的1倍图,iphont5,iphont5c,iphont5s,iphont5se,iphont6,iphont7是用的2倍图,iphont6s,iphont7s是用的3倍图。一般现在的应用只出2倍图和3倍图,不再专门出1倍图,毕竟iphont4,iphont4s市场占有率很少了,不再专门关注了。

通过[UIScreen mainScreen].scale可以看到,1倍图的手机它为1;2倍图的手机它为2,3倍图的手机它为3.因此线的高度(1像素)可以用这个宏表示线高(1像素):

//1像素

#define YX_1PX (1.0f / [UIScreen mainScreen].scale)


知道了影响APP的因素了,你就对自己的APP大小就要有一个大致的概念了,别提不可实现的需求,也不看你的APP使用的人对流量的敏感程度,再在这四个环节进行优化就能满足你的胃口。大部分人对安装包太敏感是因为你的app版本升级策略有问题,因为你采用了强制升级的策略,并且经常强制升级,强制升级是苹果严格禁止的,虽然你通过app审核期间不强制升级,等上架后再强制升级,这样绕过苹果的审核体制,但是当你的app下载量很大,被人投诉到苹果商店后,是有可能强制下架或再次发版本是审核被驳回,现在不搞你是因为你太渺小,君不见很多app都不支持强制更新的霸王条款吗?使用强制更新通常是你的业务逻辑大变更,你的应用逻辑经常大变更本身就不合常理,你的能保证你对以前业务数据的向下完美兼容吗?人们版本升级或下载安装包通常在wifi环境下,若你弹出强制更新,一般是逼着使用的人强制在2g,3g,4g环境下进行,先不论是否亲民,仅让别人使用中或打开就看到强制更新按钮,不能立刻使用就让人受不了,更没有理由让别人不对流量不敏感,若网络太差更怨声载道。所以强制更新确实应该,防止由于前期设计可能有漏洞,给后期修改业务逻辑后提供机制上的支持,防止有缺陷的业务逻辑前期app和完善业务逻辑的app同时存在,但是强制更新要慎重,别动不动就强制更新。

具体的强制更新机制见我的文章《app的版本更新 》:http://blog.csdn.net/jia12216/article/details/47018463。

iphont4s 是2倍图 但是你画一个粗为0.5的线,iphont4s显示不出来,iphont5s却可以看到一个像素(从截图上看到的)的线来。

识别手机机型使用的是几倍图,通过这个值来识别:[UIScreen mainScreen].scale。若为1就1倍图(iphone 4/iphone 4s是个例外),若为2就是2倍图,若是3就是3倍图。但是现在iphone 4/iphone 4s都是按照2倍图处理的,并且他们的屏幕截图也是640*960,说明它是2倍图。但是若你在iphone 4/iphone 4s手机上画条0.5像素的线是显示不出来的,但是在iphone 6及更高本本画一条1/([UIScreen mainScreen].scale)(就是0.5或1/3)的线是显示出来的,说明iphone 4/iphone 4s物理分辨率是1像素。

那么准确的倍图计算公式是:屏幕截图(上传苹果商店的屏幕快照或者用手机截屏得到的图片)的宽度(或高度)除以物理宽度(或高度,宽度是[[UIScreen mainScreen] bounds].size.width,高度是[[UIScreen mainScreen] bounds].size.height)的四舍五入的整数。iPhone XR的828/375=2.2.08,四舍五入值是2,它的[UIScreen mainScreen].scale也为2(FULL_WIDTH:375.000000, FULL_HEIGHT:812.000000, [UIScreen mainScreen].scale:2.000000),所以它是用2倍图。

下面是开发中用到的iphone,ipod,ipad对应的实际像素点和图片倍率:

iphont4,iphone4s实际像素点:

3.5英寸屏(320/480)

iphone5,iphone 5s,iphone 5se实际像素点:

4英寸屏 (320/568)

iphont6,iphone7,iphone8实际像素点:

4.7英寸屏(375/667)

iphont6 plus,iphone7 plus,iphone8 plus实际像素点:

5.5英寸屏 (414/736)

iphontX若不设置启动图片相当于iPhone8的放大模式(375/667) ,若设置了启动图片才是他的实际像素,实际像素点:

5.8英寸屏(375/812)

ipod4实际像素点:

4英寸屏(320/568)

iphontX若不设置启动图片相当于iPhone8的放大模式(375/667) ,若设置了启动图片才是他的实际像素,实际像素点:

5.4英寸屏(iPhone 12 mini)(375/812)

5.8英寸屏(iPhone X,iPhone XS,iPhone 11Pro)(375/896)

6.1英寸屏(iPhone XR,iPhone11) (414/896)

6.5英寸屏(iPhone XS Max, iPhone 11 Pro Max)(414/896)

ipod4实际像素点:

4英寸屏(320/568)

iPad 4,5,Air,Air2,mini3,mini4 (1024/768)

iPad Pro (1366/1024)


矢量图的图片倍率

iphont4 2倍图

iphont4s 2倍图

iphont5 2倍图

iphont5s 2倍图

iphont6 2倍图

iphont6 plus 3倍图

iphont7 2倍图

iphont7 plus 3倍图

iphont7s 2倍图

iphont7s plus 3倍图

iphont8 2倍图

iphont8 plus 3倍图

iPhone XR,iPhone 11 2倍图

iphontX,iPhone XS, iPhone XS Max, iPhone 11 Pro, Phone 11 Pro Max, iPhone 12 mini, iPhone 12, iPhone 12 Pro, Phone 12 Pro Max 3倍图

ipod4 2倍图

iphone4,iphone5,iphoneX无放大模式。iphone6,7,8的放大模式屏幕像素是:(320/568)。iphone6 plus,7 plus,8 plus的放大模式屏幕像素是:(375/667)。


下面是iphone的ps像素(手机截图尺寸):

iphont4,iphone4s 像素尺寸:

3.5英寸屏(640/960)

iphone5,iphone 5s,iphone 5se 像素尺寸:

4英寸屏 (640/1136)

iphont6,iphone7,iphone8 像素尺寸:

4.7英寸屏(750/1334)

iphont6 plus,iphone7 plus,iphone8 plus 像素尺寸:

5.5英寸屏 (1242/2208) iPhone 12 mini 5.4英寸屏(1080/2340)

iphontX,iPhone XS

5.8英寸屏(1125/2436)

iPhone XR

6.1英寸屏(828/1792)

iPhone XS Max

6.5英寸屏(1242 / 2688)

iPhone 12 Pro Max

6.7英寸屏`(1284 / 2788)


ios 10以后的系统 字体和ps像素的关系 字体大小是磅不是像素 设计大小时尽量使用有对应关系的字体像素大小。 iOS9的字体比iOS10的文字像素要小些,一般不适配 。这个是ios9及以前版本IOS开发字体大小与UI给的px对应关系:https://www.jianshu.com/p/5aa886a07524


iPhone 12 mini

5.4英寸屏 2340 x 1080 像素分辨率,476 ppi,模拟获取到的物理像素:(812 x 375)[UIScreen mainScreen].scale 倍率:3。可以看到它不是标准的3倍,不知道是模拟器错误,还是它就是这个奇怪的2.88倍


目录
相关文章
|
2月前
|
人工智能 自动驾驶 机器人
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
过去22个月,AI发展速度超过任何历史时期,但我们依然还处于AGI变革的早期。生成式AI最大的想象力,绝不是在手机屏幕上做一两个新的超级app,而是接管数字世界,改变物理世界。
1192 63
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
|
18天前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
271 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
2月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
2月前
|
编解码 异构计算
无影云电脑产品使用黑神话悟空之是否可以想主播们玩的那样手机屏幕上有虚拟按键
这段内容主要讨论了无影云电脑在使用过程中遇到的五个问题及其解答,包括是否能在手机屏幕上显示虚拟按键、解决服务器网络异常导致的连接问题、处理活动前购买的云电脑无法开启电竞模式的情况、解决游戏崩溃问题,以及处理打开游戏时报错的问题。文中提供了详细的解决步骤和参考链接。
|
3月前
|
编解码 iOS开发
IOS上架APP Store时预览图尺寸
IOS上架APP Store时预览图尺寸
445 3
|
4月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现(源码+lw+部署文档+讲解等)
|
4月前
|
存储 移动开发 Android开发
使用kotlin Jetpack Compose框架开发安卓app, webview中h5如何访问手机存储上传文件
在Kotlin和Jetpack Compose中,集成WebView以支持HTML5页面访问手机存储及上传音频文件涉及关键步骤:1) 添加`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限,考虑Android 11的分区存储;2) 配置WebView允许JavaScript和文件访问,启用`javaScriptEnabled`、`allowFileAccess`等设置;3) HTML5页面使用`<input type="file">`让用户选择文件,利用File API;
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的多功能智能手机阅读APP附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的多功能智能手机阅读APP附带文章源码部署视频讲解等
70 1
|
4月前
|
机器学习/深度学习 人工智能 视频直播
AI直播手机APP震撼发布!3大场景直播,60秒一键开播!
🎉 青否数字人AI直播APP发布!🚀 在抖音等平台60秒一键开播,简化直播流程。💡 3种AI直播模式,融合6大AIGC技术,助力新手轻松直播带货且避免违规。💪 AI主播、声音克隆,实时话术改写,智能互动与讲品同步,提升转化。📊 实景与视频直播结合,适应多种场景。🌐 独立部署,自定义版权,1年免费升级,专业售后支持。🚀 (直播: zhibo175) #青否数字人 #AI直播
AI直播手机APP震撼发布!3大场景直播,60秒一键开播!
|
3月前
|
Java Android开发 UED
安卓scheme_url调端:如果手机上多个app都注册了 http或者https 的 intent。 调端的时候,调起哪个app呢?
当多个Android应用注册了相同的URL Scheme(如http或https)时,系统会在尝试打开这类链接时展示一个选择对话框,让用户挑选偏好应用。若用户选择“始终”使用某个应用,则后续相同链接将直接由该应用处理,无需再次选择。本文以App A与App B为例,展示了如何在`AndroidManifest.xml`中配置对http与https的支持,并提供了从其他应用发起调用的示例代码。此外,还讨论了如何在系统设置中管理这些默认应用选择,以及建议开发者为避免冲突应注册更独特的Scheme。

热门文章

最新文章