您的位置:首页 > 产品设计 > UI/UE

UIImage的size和scale属性

2015-04-05 03:25 866 查看
先想一个问题“一个图像的尺寸到底是多大呢?”

  第一反应可能就是image.size,恭喜你答错了,正确的答案是图像的实际的尺寸(像素)等于image.size * image.scale。如果做过界面贴图的话你可能经常会需要准备至少两套图,一套1倍图,一套图已@2x命名的二倍图。这样当我们的程序运行在retina屏幕的时候系统就会自动的去加载@2x的图片,它的size将和一倍图加载进来的size相等,但是scale却置为2,这点大家可以做个简单的小测试验证一下。然我们再深入一点儿为什么不直接加载到成二倍的尺寸呢,原因很简单因为我们在界面布局中逻辑坐标系中的(单位是point),而实际的绘制都是在设备坐标系(单位是pixel)进行的,系统会自动帮我们完成从point到pixel之间的转化。其实这个比例也就刚好和UIScreen中的scale对应,这样整条scale的线就可以串通了。

在使用Core Image中的滤镜效果时,需要注意,滤镜之后的UIImage的尺寸是图片的真实尺寸。

当使用滤镜时,需要将尺寸还原为@2x的效果

UIImage *img = [UIImage imageNamed:@"dog"];
//...滤镜代码
CGImageRef imgRef = [context createCGImage: result fromRect: CGRectMake(0, 0,  img.size.width * img.scale, img.size.height * img.scale)];
UIImage *tempImg = [UIImage imageWithCGImage:imgRef scale:2 orientation:UIImageOrientationUp];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uiimage 滤镜尺寸