如何在不同的设备(iphone4s/5s/6/iPhone6+)中获得真实的image.size?

How to get real image.size in diff devices(iphone4s/5s/6/iPhone6+)?

原始图片文件PX as (24*50);

文件名为

"icon_detail_black.png"

在我的项目中;

使用此代码:

image_ = [UIImage imageNamed:@"icon_detail_black"];

然后差异设备的结果:

iphone 4s image_.size = (24*50)

iphone 5s image_.size = (12*25)  

iphone 6 image_.size = (12*25)  

iphone 6+ image_.size = (8*16.666666667) 

为什么?

我们能得到真正的原始尺寸吗?

我想按原样获取图像大小 (24*50)(原始图像大小)。有什么解决办法吗?谢谢

注:

"icon_detail_black.png" 文件与“@3x”文件一样, 我只是设置名称 "icon_detail_black.png", 我不想添加其他文件: "icon_detail_black.png" 和 "icon_detail_black@2x.png"

我只想使用一个文件 (@3x) 而不是三个文件,然后使用缩放图像在 iphone4s/5s/6+ 所有差异设备中显示。所以我需要得到原始图像大小。

解决方案 20150528

UIImage *image_s = [UIImage imageNamed:@"DefaultImage_JNYJScrollImage"];
CGSize size_ = image_s.size;
CGFloat float_ = image_s.scale;

size_.width =  size_.width*float_;
size_.height =  size_.height*float_;

谢谢大家

文件名 "icon_detail_black.png" 导致 IDE 渲染此维度 1x。 当你移动到 5s 时,它缩放到 2x 的分辨率,然后是 6s,同样,对于 6+,它缩放到 3x。 您应该有一张 4s 图像,一张以 @2x 结尾的 5s-6 图像和一张以 @3x 结尾的 6+ 图像,每个图像都具有适合设备的正确分辨率。

对于您的具体情况,您应该:

  • "icon_detail_black.png" 24x50px
  • "icon_detail_black@2x.png" 48x100px
  • "icon_detail_black@3x.png" 72x150px

添加到您的项目(考虑到 24x50)是 1x 的分辨率

如图所示为 1x、2x 和 3x 命名图标:

  • icon_detail_black-50w (@1x)
  • icon_detail_black-100w (@2x)
  • icon_detail_black-150w (@3x)

然后在运行时弄清楚你需要什么图像:

    NSNumber *screenWidth   = @([UIScreen mainScreen].bounds.size.width);
    NSString *imageName   = [NSString stringWithFormat:@"name-%@w", screenWidth];
    UIImage *image        = [UIImage imageNamed:imageName];

4 详情:见问题详情:

UIImage *image_s = [UIImage imageNamed:@"DefaultImage_JNYJScrollImage"];
CGSize size_ = image_s.size;
CGFloat float_ = image_s.scale;

size_.width =  size_.width*float_;
size_.height =  size_.height*float_;