视网膜显示和 [UIImage initWithData]

发布于 2024-09-10 14:14:37 字数 157 浏览 3 评论 0原文

我需要根据从服务器下载的原始数据来初始化图像,该服务器根据 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

左岸枫 2024-09-17 14:14:38

由于 iOS 6.0 UIImage 有方法 + imageWithData:scale:,您可以传递 2.0 作为视网膜的比例。

Since iOS 6.0 UIImage has method + imageWithData:scale:, you can pass 2.0 as scale for retina.

灯下孤影 2024-09-17 14:14:38

您可以传递 [[UIScreen mainScreen] scale] 作为缩放参数,而不是 2.0f

You can pass [[UIScreen mainScreen] scale] as the scale parameter instead of 2.0f.

倾`听者〃 2024-09-17 14:14:38

Swift3、4版本

let image = UIImage(data: imageData, scale: UIScreen.main.scale)

Swift3, 4 version

let image = UIImage(data: imageData, scale: UIScreen.main.scale)
朮生 2024-09-17 14:14:38

如果需要,请将其放入 .m 中或导入的类中(调用函数 IMAO 时,c 的语法更好)

BOOL isRetina(){
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
        return [[UIScreen mainScreen] scale] == 2.0;
    }
    return NO;
}

然后使用服务器数据创建图像时:

[UIImage imageWithData:dataFromServer scale:isRetina()?2:1];

put this in your .m if you want or on an imported class (the syntax of c is nicer when calling the function IMAO)

BOOL isRetina(){
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
        return [[UIScreen mainScreen] scale] == 2.0;
    }
    return NO;
}

Then when creating the image with the server data:

[UIImage imageWithData:dataFromServer scale:isRetina()?2:1];
一个人的夜不怕黑 2024-09-17 14:14:38

AFAIK 您不需要自己设置比例值。操作系统将为您处理点到像素的转换。

AFAIK you don't need to set the scale value yourself. The OS will handle the points to pixel translation for you.

桜花祭 2024-09-17 14:14:37

我不知道您可以在图像数据本身中嵌入任何内容来告诉手机它是 @2x 图像,但类似这样的东西应该可以工作:

UIImage * img = ...;
img = [UIImage imageWithCGImage:img.CGImage scale:2 orientation:img.imageOrientation];

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:

UIImage * img = ...;
img = [UIImage imageWithCGImage:img.CGImage scale:2 orientation:img.imageOrientation];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文