首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIImageView,CGImage和Retina Art

UIImageView,CGImage和Retina Art
EN

Stack Overflow用户
提问于 2012-02-08 16:27:58
回答 2查看 1.1K关注 0票数 2

我的界面中有几个CALayers,我将图像直接绘制到各层,而不是imageViews。

这里有一个片段:

代码语言:javascript
复制
UIImage *anImage = [UIImage imageNamed:@"anyImage"];
CGImageRef anImageRef = [anImage CGImage];
CALayer *aLayer = [CALayer layer];
CGFloat anImageWidth = CGImageGetWidth(anImageRef);
CGFloat anImageHeight = CGImageGetHeight(anImageRef);
CGRect layerFrame = CGRectMake(0,0,anImageWidth, anImageHeight);
[aLayer setLayerContents:(__bridge id)anImageRef];
[parentLayer addSublayer:aLayer];

所以我的问题是,我得到的结果与图像的大小不一致。在视网膜设备上,出现的图像是预期大小的两倍(例如,它匹配@2x图像的像素大小)。在视网膜模式下的模拟器上,绘制到该层的图像是预期的大小(其中点与非视网膜图像的像素匹配)。

与其静态设置大小,或者将大小减半(这可以纠正设备上的问题,但破坏了与非视网膜显示器的兼容性),对于这种情况,有什么好的解决方案或解决方法呢?为什么会这样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-08 17:15:58

UIImage包含一个刻度属性。它将是2.0的视网膜显示图像。有关更多信息,请参见医生们

票数 2
EN

Stack Overflow用户

发布于 2012-02-08 17:15:52

CGImageGetWidth()CGImageGetHeight()返回像素数,而需要点的图像大小。使用-[UIImage size]代替。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9197389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档