iOS像素对齐概念解析

 更新时间:2016年09月21日 08:39:54   作者:huahuahu  
这篇文章主要为大家详细介绍了iOS像素对齐概念,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在iOS中,有一个概念叫做像素对齐,如果像素不对齐,那么在GPU渲染时,需要进行插值计算,这个插值计算的过程会有性能损耗。 

在模拟器上,有一个选项可以把像素不对齐的部分显示出来。

逻辑像素与物理像素

在iOS设备上,有point(逻辑像素)的概念,以及pixel(物理像素)的概念。
 在编程序时,用的是point,实际渲染时用的是pixel。一个point可以对应多个pixel。
 point和pixel的比例是可以通过[[UIScreen mainScreen] scale]来制定。

UIImage的scale概念 

If you load an image from a file whose name includes the @2x modifier, the scale is set to 2.0. You can also specify an explicit scale factor when initializing an image from a Core Graphics image. All other images are assumed to have a scale factor of 1.0. 

image也有size的概念。

This value reflects the logical size of the image and takes the image's current orientation into account. Multiply the size values by the value in the scale property to get the pixel dimensions of the image. 

就是说image的size和image和scale相乘,得到物理像素的大小。

问题

那么像素不对齐指的是物理像素(pixel)和逻辑像素(point)对齐呢?

实验

使用300*225像素的png图片。分别使用不同的方法load到内存中,得到不同的size和scale,然后放在不同size的imageview里。使用color misaligned images来判定是否像素对齐。
 这里模拟器使用的iPhone 6,屏幕的 scale是2。

部分代码

  NSLog(@"screen scale is %f",[[UIScreen mainScreen] scale]);
  UIImage *image = [UIImage imageNamed:@"test.png"];
  NSLog(@"image size %@, scale %f ", [NSValue valueWithCGSize:image.size], image.scale);
  UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
//  imageView.frame = CGRectMake(50, 100, imageView.bounds.size.width * 2/3, imageView.bounds.size.height * 2/3);
  imageView.frame = CGRectMake(50, 100, imageView.bounds.size.width, imageView.bounds.size.height);
  NSLog(@"imageView frame %@", [NSValue valueWithCGRect:imageView.frame]);
  [self.view addSubview:imageView];

 结论
 1.所谓的像素对齐,指的是物理像素对齐。
 2.如果是2x的图像,放在3x的屏幕上(6sp),也会发生像素不对齐的情况。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • iOS中valueForKeyPath的常用方法法示例

    iOS中valueForKeyPath的常用方法法示例

    这篇文章主要给大家介绍了关于iOS中valueForKeyPath的常用方法法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • IOS中使用UIWebView 加载网页、文件、 html的方法

    IOS中使用UIWebView 加载网页、文件、 html的方法

    UIWebView 是用来加载加载网页数据的一个框,接下来通过本文给大家介绍IOS中使用UIWebView 加载网页、文件、 html的方法,对本文详情感兴趣的朋友一起学习吧
    2016-02-02
  • iOS集成微信支付开发

    iOS集成微信支付开发

    这篇文章主要为大家详细介绍了iOS集成微信支付开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • iOS 本地存储NSUserDefaults封装代码

    iOS 本地存储NSUserDefaults封装代码

    下面小编就为大家分享一篇iOS 本地存储NSUserDefaults封装代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • iOS UITextField 显示银行卡格式的方法

    iOS UITextField 显示银行卡格式的方法

    下面小编就为大家分享一篇iOS UITextField 显示银行卡格式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • 利用iOS实现系统相册大图浏览功能详解

    利用iOS实现系统相册大图浏览功能详解

    查看大图是们日常开发中经常会遇到的一个需求,下面这篇文章主要给大家介绍了关于利用iOS实现系统相册大图浏览功能的相关资料,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面来一起看看吧。
    2017-09-09
  • 浅谈iOS中的锁的介绍及使用

    浅谈iOS中的锁的介绍及使用

    本篇文章主要介绍了浅谈iOS中的锁的介绍及使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 详解iOS开发中UIPickerView控件的使用方法

    详解iOS开发中UIPickerView控件的使用方法

    这篇文章主要介绍了详解iOS开发中UIPickerView控件的使用方法,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-11-11
  • IOS中计算缓存文件的大小判断实例详解

    IOS中计算缓存文件的大小判断实例详解

    这篇文章主要介绍了IOS中计算缓存文件的大小判断实例详解的相关资料,希望通过本能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • IOS 中UIKit-UIPageControl利用delegate定位圆点位置

    IOS 中UIKit-UIPageControl利用delegate定位圆点位置

    这篇文章主要介绍了IOS 中UIKit-UIPageControl利用delegate定位圆点位置 的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论