Xcode为1x,2x,4“2x和3x资产提供资产桶。我的全屏资产在这种配置下都很顺利,因为2x存储桶用于3.5英寸和4.7英寸的屏幕。目前我有一个反映当前屏幕尺寸的UIImage类别,如果设备看起来是3.5英寸,则选择“* -3.5”资产。Xcode资产目录支持3.5英寸,4英寸和4.7英寸@ 2x图像?
这是笨重的,而且不酷。设备尺寸为他们的LaunchImage资产,我希望有一种方式来提供非启动图像资产的设备特定资产,而不诉诸代码。
Xcode为1x,2x,4“2x和3x资产提供资产桶。我的全屏资产在这种配置下都很顺利,因为2x存储桶用于3.5英寸和4.7英寸的屏幕。目前我有一个反映当前屏幕尺寸的UIImage类别,如果设备看起来是3.5英寸,则选择“* -3.5”资产。Xcode资产目录支持3.5英寸,4英寸和4.7英寸@ 2x图像?
这是笨重的,而且不酷。设备尺寸为他们的LaunchImage资产,我希望有一种方式来提供非启动图像资产的设备特定资产,而不诉诸代码。
移动到Xcode 6和iOS 8时使用现有的项目会产生一些初始问题。我通过改变图像从Device specific
设置Universal
解决了这个。这将删除R4图像选项,给你留下@1x
,@2x
和@3x
。如果使用例如背景需要适合屏幕的图像,然后我会建议您找到一张不必完全适合看起来很好的图像,并将图像设置为显示为Aspect Fill
。
我已经向苹果这个错误自十一月中旬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)也不会损失太多质量。
我有same problem并得到了苹果,我必须写代码,这个确认。例如,你可以尝试这样的Fullscreen images on iPhone 6 with Asset Catalogs
但其实我去偷懒一下它通过使用一个2X 4" & 4.7" 屏幕,另外2个3.5" 屏幕
[Xcode的6设备特定资产的
可能重复目录(http://stackoverflow.com/questions/25954706/xcode-6-device-specific-asset-catalog) – 2014-10-06 16:19:35