Xcode资产目录支持3.5“,4”和4.7“@ 2x图像?

Xcode提供了1x,2x,4“2x和3x资产的资产桶,我的全屏资源都是这样configuration的,因为2x桶用于3.5”和4.7“的屏幕,目前我有一个UIImage类别,当前的屏幕尺寸,并且如果设备看起来是3.5“,则select”* -3.5“资产。

这是笨重的,不酷。 看到Xcode迎合他们的LaunchImage资产的所有不同的设备大小,我希望有一些方法来提供非启动图像资产的设备特定的资产,而不诉诸于代码。

自2014年11月中旬以来,我向苹果公司报告了这个问题,我刚刚注意到他们将其标记为“无价值”……这给我留下了一个印象,苹果已经省去了iPhone 6的额外插槽。 我的猜测是,他们现在希望将2插槽用于iPhone 6,也许他们正在减less对iPhone 4s的支持,因为它正在变老。

如果你真的想继续支持iPhone 4s,我build议在2倍插槽中使用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 4),即使纵横比不相同,也不会损失太多质量。

移动到Xcode 6和iOS 8时使用现有的项目会产生一些初始问题。 我解决了这个问题,将图像集从“ Device specific更改为“ Universal 。 这将删除R4映像选项,并为您留下@1x@2x@3x 。 如果您使用例如需要适合屏幕的背景图像,那么我会build议您find一张不必完全适合看起来很好的图像,并将图像设置为Aspect Fill显示。

我有同样的问题,并得到苹果的确认,我必须为此编写代码。 例如,您可以使用资产目录在iPhone 6上尝试像这样的全屏图像

但我实际上懒得用4“和4.7”的一个2x和3.5“屏幕的2x