Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 3.5“的Xcode资产目录支持;,“4”;,及4.7",@2倍图像?_Ios_Xcode_Iphone 6_Asset Catalog - Fatal编程技术网

Ios 3.5“的Xcode资产目录支持;,“4”;,及4.7",@2倍图像?

Ios 3.5“的Xcode资产目录支持;,“4”;,及4.7",@2倍图像?,ios,xcode,iphone-6,asset-catalog,Ios,Xcode,Iphone 6,Asset Catalog,Xcode为1x、2x、4“2x和3x资产提供了资产存储桶。我的全屏资产在这种配置下都是不可靠的,因为2x存储桶用于3.5”和4.7”屏幕。目前我有一个UIImage类别,用于检查当前屏幕大小,如果设备看起来是3.5,则选择“*-3.5”资产 这既笨重又不酷。看到Xcode为LaunchImage资产提供了所有不同大小的设备,我希望有某种方法可以为非LaunchImage资产提供特定于设备的资产,而无需使用代码 在迁移到Xcode 6和iOS 8时使用现有项目会产生一些初始问题。我通过将图像集从

Xcode为1x、2x、4“2x和3x资产提供了资产存储桶。我的全屏资产在这种配置下都是不可靠的,因为2x存储桶用于3.5”和4.7”屏幕。目前我有一个UIImage类别,用于检查当前屏幕大小,如果设备看起来是3.5,则选择“*-3.5”资产


这既笨重又不酷。看到Xcode为LaunchImage资产提供了所有不同大小的设备,我希望有某种方法可以为非LaunchImage资产提供特定于设备的资产,而无需使用代码

在迁移到Xcode 6和iOS 8时使用现有项目会产生一些初始问题。我通过将图像集从
设备特定的
更改为
通用的
解决了这个问题。这将删除R4图像选项,并留给您
@1x
@2x
@3x
。例如,如果您使用需要适合屏幕的背景图像,那么我建议您找到一个不需要100%完美才能看起来很好的图像,并将图像设置为显示为
Aspect Fill

自2014年11月中旬以来,我向苹果公司报告了一个关于这个问题的错误,我只是注意到他们将其标记为无价值。。。这给我的印象是,苹果故意省略了iphone6的额外插槽。我的猜测是,他们现在希望iPhone6使用2倍的插槽,也许他们正在减少对iPhone4S的支持,因为它已经过时了

如果你真的想继续支持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 4)不会损失太多质量,即使纵横比不一样。

我得到了苹果的确认,我必须为此编写代码。例如,你可以这样尝试

但实际上我很懒散,用一个2x表示4英寸和4.7英寸的屏幕,另一个2x表示3.5英寸的屏幕