我这样做是为了确定块中下载图像的大小,然后我会相应地设置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}
为什么会这样。
答案 0 :(得分:1)
因为您正在下载的图像未被识别为“视网膜”图像,因此在视网膜设备上,它将显示为实际像素的一半大小。您可以通过读取文件名为“filenam@2x.jpg”的图像将图像指定为视网膜,或者您可以在创建时将UIImage的“比例”值指定为1.0(非视网膜)或2.0(视网膜)< / p>
[UIImage imageWithData:scale:]
[UIImage imageWithCGImage:scale:orientation:]
如果您没有提供比例值,则假设图像是您发现的适当分辨率。
答案 1 :(得分:0)
原因是UIImage大小,因为iOS4,返回的点不是像素。在视网膜显示屏上显示您所看到的结果。来自Apple Docs:
尺寸
图像的尺寸,考虑了方向。
@property(非原子,只读)CGSize大小
讨论在iOS 4.0及更高版本中,此值反映逻辑大小 图像并以点为单位进行测量。在iOS 3.x及更早版本中,这个 值始终反映以像素为单位测量的图像尺寸。