iOS中的图像大小

在移动端开发中,对于屏幕的适配是一件头痛的事情,相对来说iOS的适配还是很容易实现的。现在来说一说在iOS中的图像大小问题。

1. iOS中的一些高度

在iPhone X发布后,iOS开发时就需要主要顶部与底部高度的适配。
   在顶部,增加了刘海,因此导航栏的高度就相应变高了。
   在底部,增加了安全距离,因此底部也变高了,具体如下

代码获取:

#define kIs_iphone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define kIs_iPhoneX kScreenWidth >=375.0f && kScreenHeight >=812.0f&& kIs_iphone
/*状态栏高度*/
#define kStatusBarHeight (CGFloat)(kIs_iPhoneX?(44.0):(20.0))
/*导航栏高度*/
#define kNavBarHeight (44)
/*状态栏和导航栏总高度*/
#define kNavBarAndStatusBarHeight (CGFloat)(kIs_iPhoneX?(88.0):(64.0))
/*TabBar高度*/
#define kTabBarHeight (CGFloat)(kIs_iPhoneX?(49.0 + 34.0):(49.0))
/*顶部安全区域远离高度*/
#define kTopBarSafeHeight (CGFloat)(kIs_iPhoneX?(44.0):(0))
/*底部安全区域远离高度*/
#define kBottomSafeHeight (CGFloat)(kIs_iPhoneX?(34.0):(0))
/*iPhoneX的状态栏高度差值*/
#define kTopBarDifHeight (CGFloat)(kIs_iPhoneX?(24.0):(0))
/*导航条和Tabbar总高度*/

2. iOS中的一些大小

下面主要代理苹果手机的屏幕变化。
在这里插入图片描述
至于其中的概念就是下一节介绍的。

3. iOS中的点与像素

下面是我的一些理解,如果有问题请评论补充修改。

3.1 分辨率

   这里只说显示系统,在一个显示系统,对于细节的分辨能力叫分辨能,简单来说就是清不清晰。平时以 1080 * 1920p、2K、4K等来描述分辨率。这个数据描述的是总的像素数,如横向1080个像素,纵向1920个像素。
   分辨率又有图像分辨率和屏幕分辨率。至于这两种分辨率的区别需要先了解一下像素的概念,见下一节。

3.2 像素
3.2.1 图像像素

   我们所看到的图片其实就是一个个像素组成的,这个像素就是图像像素。在数据层面上,图像像素其实就是一个存储颜色信息的数据。颜色信息可以用二进制数据来表示,颜色所用到的二进制位数称之为色彩深度,简称色深。
比如:
   一个bit来存储颜色,而一个bit还有0和1,因此最多存储两种颜色,那么以黑白为例,我们所能看到的视频和图片可能就都是黑白的。
如果色深为8bit,16bit呢,就可以表示2^82^16个颜色。但是图片的大小也会越来越大。通常采用24bit,每一个字节分别存储红黄绿三中原色的信息。
   下面我们来计算一张图片的大小,比如一张图片为1920 & 1080的图片,色深为24bit的。

图片大小就是:像素总数 * 色深 / 8 (一个字节 == 8bit)
即就是:1080 * 1920 * 24 / 8 = 5.9MB

因此图像分辨率即就是图像像素的总数。

3.2.2 屏幕像素

   显示器中有一个最小的物理单元,不管是LCD的屏幕,还是OLED的屏幕,其实都是让一个具有三组颜色的点发光来实现的,这个物理点,我们称之为屏幕像素。
在这里插入图片描述
左OLED,右LCD
在这里插入图片描述
   这里不介绍屏幕的组成和工作原理,主要说一下屏幕像素。屏幕像素是厂家在制造时就确定了大小,像素之间的距离,屏幕等。因此该屏幕的分辨率就是整个屏幕像素的总数。

3.2.3 总结

   我们经常把经过一英寸有多少像素来判断该屏幕的清晰度——pixels per inch,简称PPI。
   这个来描述分辨率,我认为是比较准确的。
   因为不是像素越多,越清晰,这个还需要有一个容器的大小来描述,因为像素是抽象的,我们并不知道一个像素是多大。比如1080 * 1920的像素总数放在篮球场和放在一张A4纸上,很明显后者会更清晰。

3.3 点

   上一节说到了PPI,当然还有一个容易混淆的概念就是——dots per inch,即就是DPI。
   DPI在显示器与打印方法,也可以用分辨率的描述。
   但是在这里不做解释,而是为了说明一下在iOS开发中的pt,即就是point。
2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素。下文也是按照宽度,高度的顺序排列。这个分辨率一直到iPhone 3GS也保持不变。
2010年,iPhone 4发布,率先采用Retina显示屏,在屏幕的物理尺寸不变的情况下,像素成倍增加,达到 640 x 960 像素。
   为了兼容之前的App做的UI适配,引入一个新的概念point(点)。点这个概念在iOS开发中十分重要,而非开发者很少关注。iPhone 4屏幕尺寸继续保持320 x 480,不过单位并非是像素,而是点。
   由于固定大小的屏幕引入了更多的像素,因此屏幕模式也便出现了,那么常见的切图@1X@2X@3X就是为了适配不同像素的屏幕。
   同理,UIImage中和UIScreen中有一个属性叫scale,也和这个有关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值