如何在不同的设备(iphone 4s/5s/6/iPhone 6s)中获得真实的 image.size?
Posted
技术标签:
【中文标题】如何在不同的设备(iphone 4s/5s/6/iPhone 6s)中获得真实的 image.size?【英文标题】:How to get real image.size in diff devices(iphone4s/5s/6/iPhone6+)? 【发布时间】:2015-05-27 09:11:28 【问题描述】:原图文件PX as (24*50)
;
文件名为
“icon_detail_black.png”
在我的项目中;
使用此代码:
image_ = [UIImage imageNamed:@"icon_detail_black"];
然后是 diff devices 中的结果:
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_;
谢谢大家。
【问题讨论】:
【参考方案1】:文件名“icon_detail_black.png”导致 IDE 将此尺寸渲染为 1x。 当您移动到 5 秒时,它会缩放到 2 倍的分辨率,然后缩放到 6 倍,同样,对于 6+,它会缩放到 3 倍。 您应该有一张 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 的分辨率
【讨论】:
这个“icon_detail_black.png”文件和“@3x”文件一样,我只是设置名称“icon_detail_black.png”,我不想添加其他文件:“icon_detail_black.png”和“icon_detail_black@2x.png”我只想使用一个文件(@3x)而不是三个文件,然后使用比例图像在 iphone4s/5s/6+ 所有差异设备中显示。所以我需要获取原始图像大小。 如果你只想使用1个文件,你只能将资源重命名为@3x,编译器自己调整大小。 2 Vlad:我也这样做了,但结果都一样。【参考方案2】:为 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];
【讨论】:
【参考方案3】: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_;
【讨论】:
以上是关于如何在不同的设备(iphone 4s/5s/6/iPhone 6s)中获得真实的 image.size?的主要内容,如果未能解决你的问题,请参考以下文章
为不同的设备/分辨率使用不同的图像,例如如何使用波浪号 (~) 来区分 iPhone 和 iPad?
如何使用 Xcode Storyboard 为不同的设备设置不同的字体大小?
请问电脑PC自带IE浏览器和 苹果IPHONE或者安卓手机打开同一域名网站时,分别显示不同内容,代码如何修改,