加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 来自URL的图像的Retina显示

发布时间:2020-12-16 03:28:14 所属栏目:百科 来源:网络整理
导读:我有一些我需要从网上获取的图片.只使用来自URL的数据. 它们需要在Retina Display上正确显示. 当我从网络上获取图像时,它们仍然看起来像素化.我需要将图像的比例设置为视网膜显示(2.0),但我必须遗漏一些东西. 这是我到目前为止所做的. UIImage *img = [UIIma
我有一些我需要从网上获取的图片.只使用来自URL的数据.
它们需要在Retina Display上正确显示.
当我从网络上获取图像时,它们仍然看起来像素化.我需要将图像的比例设置为视网膜显示(2.0),但我必须遗漏一些东西.
这是我到目前为止所做的.
UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:@"http://www.msdomains.com/tmp/test.png"];

CGRect labelFrame = CGRectMake(0,64,64);
UIImageView *imageView = [[UIImageView alloc] initWithFrame:labelFrame];
imageView.contentScaleFactor = [UIScreen mainScreen].scale;

[imageView setImage:img];
[self addSubview:imageView];
[imageView release];

解决方法

你的代码应该按原样运行.我不知道你的图像的原始尺寸是什么,但我猜它们是64×64像素.为了正确缩小尺寸,原始图像需要为128×128像素.

作为测试,以下代码在模拟器和我的iPhone 4上正确显示了Retina分辨率的照片:

UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.seenobjects.org/images/mediumlarge/2006-08-19-native-lilac.jpg"]]];

CGRect labelFrame = CGRectMake(0,375,249.5);
UIImageView *imageView = [[UIImageView alloc] initWithFrame:labelFrame];

[imageView setImage:img];
[self.view addSubview:imageView];

请注意,UIImageView是375×249.5点,这是照片原始(像素)尺寸的一半.此外,似乎没有必要设置contentScaleFactor.

(顺便说一句,我无法看到在URL上指定@ 2x会有所帮助,在这种情况下,因为对dataWithContentsOfURL的调用:将返回一个不透明的数据块,没有文件名的痕迹.这是不透明的数据然后传递给imageWithData:加载图像.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读