视网膜显示和 [UIImage initWithData]
我需要根据从服务器下载的原始数据来初始化图像,该服务器根据 iPhone 客户端的类型提供正确的图像大小。
我知道我应该在 640x960 显示屏上将比例值设置为 2.0,但是这是一个只读属性,在使用 initWithData 时无法在初始化期间设置。
有什么想法吗?
I need to initialise images from raw data downloaded from a server which delivers the correct size of image based on the type of iPhone client.
I know that I should be setting the scale value to be 2.0 on the 640x960 display, however this is a readonly property and cannot be set during the init when using initWithData.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
由于 iOS 6.0
UIImage
有方法+ imageWithData:scale:
,您可以传递2.0
作为视网膜的比例。Since iOS 6.0
UIImage
has method+ imageWithData:scale:
, you can pass2.0
as scale for retina.您可以传递
[[UIScreen mainScreen] scale]
作为缩放参数,而不是2.0f
。You can pass
[[UIScreen mainScreen] scale]
as the scale parameter instead of2.0f
.Swift3、4版本
Swift3, 4 version
如果需要,请将其放入 .m 中或导入的类中(调用函数 IMAO 时,c 的语法更好)
然后使用服务器数据创建图像时:
put this in your .m if you want or on an imported class (the syntax of c is nicer when calling the function IMAO)
Then when creating the image with the server data:
AFAIK 您不需要自己设置比例值。操作系统将为您处理点到像素的转换。
AFAIK you don't need to set the scale value yourself. The OS will handle the points to pixel translation for you.
我不知道您可以在图像数据本身中嵌入任何内容来告诉手机它是 @2x 图像,但类似这样的东西应该可以工作:
I'm not aware of anything you can embed in the image data itself to tell the phone that it's a @2x image, but something like this should work: