2014-10-06 82 views
2

Xcode为1x,2x,4“2x和3x资产提供资产桶。我的全屏资产在这种配置下都很顺利,因为2x存储桶用于3.5英寸和4.7英寸的屏幕。目前我有一个反映当前屏幕尺寸的UIImage类别,如果设备看起来是3.5英寸,则选择“* -3.5”资产。Xcode资产目录支持3.5英寸,4英寸和4.7英寸@ 2x图像?

这是笨重的,而且不酷。设备尺寸为他们的LaunchImage资产,我希望有一种方式来提供非启动图像资产的设备特定资产,而不诉诸代码。

+0

可能重复目录(http://stackoverflow.com/questions/25954706/xcode-6-device-specific-asset-catalog) – 2014-10-06 16:19:35

回答

0

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

2

我已经向苹果这个错误自十一月中旬2014年我只注意到他们将其标记为没有价值......这给我的印象苹果已经省略了故意iPhone 6的额外插槽。我的猜测是他们现在希望将2个插槽用于iPhone 6,也许他们正在减少对iPhone 4s的支持,因为它正在变老。

如果你真的想继续支持iPhone 4S,我建议在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)也不会损失太多质量。

相关问题