Xcode 为 1x、2x、4"2x 和 3x Assets 提供 Assets 桶。我的全屏 Assets 在这种配置下都很不稳定,因为 2x 桶用于 3.5"和 4.7"屏幕。目前我有一个 UIImage 类别内省(introspection)当前屏幕尺寸,如果设备看起来是 3.5,则选择“*-3.5” Assets 。
这很笨重而且不酷。看到 Xcode 可以满足其 LaunchImage Assets 的所有不同设备尺寸,我希望有某种方法可以为非启动图像 Assets 提供特定于设备的 Assets ,而无需借助代码。
Best Answer-推荐答案 strong>
自 2014 年 11 月中旬以来,我已向 Apple 报告了一个关于此问题的错误,我只是注意到他们将其标记为无值(value)……这给我的印象是,Apple 故意省略了 iPhone 6 的额外插槽。我的猜测是他们现在希望将 2x 插槽用于 iPhone 6,也许他们正在减少对 iPhone 4s 的支持,因为它已经过时了。
如果你真的想继续支持 iPhone 4s,我建议在 2x slot 中使用 iPhone 6 大小的图片,然后使用以下方法加载图片:
+(UIImage *)loadImageNamedNSString *)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 drawInRectCGRect){0, 0, newSize}];
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resizedImage;
}
return image;
}
即使纵横比不同,将大图像 (iPhone 6) 调整为小图像 (iPhone 4) 也不会损失太多质量。
关于ios - Xcode Assets 目录支持 3. 5", 4"和 4.7"@2x 图像?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/26219762/
|