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

时间:2015-05-27 09:11:29

标签: ios iphone uiimage

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

文件名为

  

" icon_detail_black.png"

在我的项目中;

使用此代码:

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

然后是diff设备的结果:

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_;

谢谢大家。

3 个答案:

答案 0 :(得分:0)

文件名" icon_detail_black.png"导致IDE将此维度呈现为1x。 当你移动到5s时,比例分辨率为2x,然后是6,相同,而6+则比例缩放3x。 您应该有一个4s的图像,一个用于5s-6结束于@ 2x,一个用于6+结束于@ 3x,每个图像都具有适当的设备分辨率。

特别是对于您的情况,您应该:

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

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

的分辨率

答案 1 :(得分:0)

如图所示,为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];

答案 2 :(得分:0)

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_;