在模拟器和设备中安装应用程序时,图像相同但大小不同,AFNetWorking

Posted

技术标签:

【中文标题】在模拟器和设备中安装应用程序时,图像相同但大小不同,AFNetWorking【英文标题】:same image but getting different size when installing the app in simulator and device,AFNetWorking 【发布时间】:2013-02-28 16:28:22 【问题描述】:

我正在执行以下操作来确定块期间下载图像的大小,然后我将相应地设置 uiimageview 的大小。

self.headerView 是 xib 中 uiimageview 的出口连接

  __weak  UIImageView *weakObj    =   self.headerView;

    [self.headerView setImageWithURLRequest:[NSMutableURLRequest requestWithURL:[NSURL URLWithString:fundraiserInfo.imageUrl]]
                           placeholderImage:nil
                                    success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) 
                                        NSLog(@"image is %@",NSStringFromCGSize(image.size));

                                        CGRect newFrame ;
                                        newFrame                    =   weakObj.frame;
                                        newFrame.size.width         =   image.size.width;
                                        newFrame.size.height        =   image.size.height;
                                        weakObj.frame               =   newFrame;


                                    
                                    failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) 
                                        ;
                                    
     ];

但是,当在模拟器 (Device-Iphone) 上运行应用程序时,我得到了

image is 300, 222

但是,如果我使用模拟器 (Retina 3.5) 或 (Retina 4) 或者我在 iphone4 或 iphone 5 上安装应用程序,我会得到:

image is 150, 111

为什么会这样。

【问题讨论】:

【参考方案1】:

这是因为您正在下载的图像未被识别为“视网膜”图像,因此在视网膜设备上,它将显示为实际像素大小的一半。您可以通过读取文件名为“filenam@2x.jpg”的图像将图像指定为视网膜,或者您可以在创建时将 UIImage 的“缩放”值指定为 1.0(非视网膜)或 2.0(视网膜)

[UIImage imageWithData:scale:]
[UIImage imageWithCGImage:scale:orientation:]

如果您不提供比例值,则假定图像是您发现的适当分辨率。

【讨论】:

我们如何将图像定义为视网膜图像。应该从服务器端还是移动端完成? 如果您想在视网膜和非视网膜设备上都有清晰的图像,您的服务器应该根据请求中提供的参数返回视网膜和非视网膜图像。【参考方案2】:

原因是 UIImage 大小,从 ios4 开始,返回的是点而不是像素。视网膜显示器上的哪个提供了您所看到的结果。来自 Apple 文档:

大小

图像的尺寸,考虑到方向。

@property(nonatomic, readonly) CGSize 大小

讨论 在 iOS 4.0 及更高版本中,这个值反映了逻辑大小 图像的大小,以点为单位。在 iOS 3.x 及更早版本中,这 值始终反映以像素为单位测量的图像尺寸。

【讨论】:

以上是关于在模拟器和设备中安装应用程序时,图像相同但大小不同,AFNetWorking的主要内容,如果未能解决你的问题,请参考以下文章

如何在 tvOS 模拟器中安装应用程序?

如何获取点在UIImageView上的点的坐标,使它们在所有设备(不同大小/分辨率)上的相同位置?

在模拟器中安装 Flutter Release apk

HarmonyOShap包在多台设备中安装和HarmonyOS应用含多个module安装问题

TextView大小在实际设备和模拟器中有所不同

在不同的目录中安装 opencv 2.2