这个问题仍然没有得到回答。使用特定于设备(非通用)的资产目录时,选项为1x、2x、r 2x、3x。1x是不必要的,因为它不是视网膜。2x是ip4的最佳配置,分辨率为640x960。R2x是用于ip5的井,其分辨率为640x1136。3x是分辨率为1242x2208的ip6plus井。
现在,当我运行ip6 (而不是ip6plus!)的模拟器时,它使用的是2x图像(ip4是640x960分辨率),而且它也没有放大到充满屏幕(这无论如何都没有意义,因为比率不适合)。
有没有人找到了为新手机设置背景图片的合适指南?我的意思不是解释各种res大小是如何缩放的,这一点很清楚,但如何解决共享ip4和ip6的xcassets图像@2x之间明显的不匹配?谢谢!
编辑:Xcode asset catalog support for 3.5", 4", and 4.7" @2x images?类似的问题,但没有真正解决,只是使用通用而不是设备特定的解决方法。有人知道更好的方法吗?
发布于 2015-02-11 22:53:48
自2014年11月中旬以来,我已经向苹果报告了一个关于这个问题的bug,我只是注意到他们把它标记为没有价值……这给我的印象是,苹果故意为iPhone 6省略了一个额外的插槽。我的猜测是,他们现在希望2x插槽用于iPhone 6,也许他们正在减少对iPhone 4s的支持,因为它太老了。
如果你真的想继续支持iPhone 4s,我建议在2x插槽中使用iPhone 6大小的图像,然后使用以下方法加载你的图像:
+(UIImage *)loadImageNamed:(NSString *)imageName
{
CGSize screenSize = [UIScreen mainScreen].bounds.size;
CGFloat screenHeight = MAX(screenSize.width, screenSize.height);
CGFloat const IPHONE_4_SCREEN_HEIGHT = 480;
UIImage *image = [UIImage imageNamed:imageName];
if(screenHeight == IPHONE_4_SCREEN_HEIGHT) {
CGFloat const xScale = .85333333;//x conversion ratio from iPhone 6's 375 pts width screen to iPhone 4's 320 pts width screen
CGFloat const yScale = .71964018;//y conversion ratio from iPhone 6's 667 pts height screen to iPhone 4's 480 pts height screen
CGSize newSize = CGSizeMake(xScale * image.size.width, yScale * image.size.height);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0);
[image drawInRect:(CGRect){0, 0, newSize}];
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resizedImage;
}
return image;
}
即使宽高比不同,将大图像(iPhone 6)调整为小图像(iPhone 4s)也不会损失太多质量。
编辑:
这是苹果关系部对我的bug报告的回答:
基于以下方面,我们没有解决此问题的计划:
我们在IB中引入了size类。因此,我们希望开发人员使用具有图像视图的XIB,该视图控制如何加载和显示图像。如果他们绝对必须为所有可能的屏幕尺寸提供像素完美的图像,那么他们需要像你建议的那样做,并确定加载自己的特定资源。
我们现在关闭此报告。
如果您对解决方案有疑问,或者这对您来说仍然是一个关键问题,请使用该信息更新您的错误报告。
请务必定期检查新的苹果版本是否有可能影响此问题的任何更新。
发布于 2014-10-28 17:19:33
添加640*1136的图像,因为ip6与ip5而不是ip4成正比,iPhone6也有@3x的选项
发布于 2014-10-28 17:28:20
你不能将@2x
图片添加到你的资源中,并希望它能适合你的所有尺寸。的背景。iP4和iP5只是不同,所以你必须为iP4使用两个assets regular/@2x
,为iP5/6使用regular/@2/@3
,因为它们有相同的比例(通用情况)。
另一种方式是设置@2x
和R4
,但没有@2x
和@2x retina
,因为它们是相同的。
https://stackoverflow.com/questions/26604477
复制相似问题