首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >xcode 6资产目录iphone 6

xcode 6资产目录iphone 6
EN

Stack Overflow用户
提问于 2014-10-28 17:12:03
回答 3查看 1.3K关注 0票数 0

这个问题仍然没有得到回答。使用特定于设备(非通用)的资产目录时,选项为1x、2x、r 2x、3x。1x是不必要的,因为它不是视网膜。2x是ip4的最佳配置,分辨率为640x960。R2x是用于ip5的井,其分辨率为640x1136。3x是分辨率为1242x2208的ip6plus井。

现在,当我运行ip6 (而不是ip6plus!)的模拟器时,它使用的是2x图像(ip4是640x960分辨率),而且它也没有放大到充满屏幕(这无论如何都没有意义,因为比率不适合)。

有没有人找到了为新手机设置背景图片的合适指南?我的意思不是解释各种res大小是如何缩放的,这一点很清楚,但如何解决共享ip4和ip6的xcassets图像@2x之间明显的不匹配?谢谢!

编辑:Xcode asset catalog support for 3.5", 4", and 4.7" @2x images?类似的问题,但没有真正解决,只是使用通用而不是设备特定的解决方法。有人知道更好的方法吗?

EN

回答 3

Stack Overflow用户

发布于 2015-02-11 22:53:48

自2014年11月中旬以来,我已经向苹果报告了一个关于这个问题的bug,我只是注意到他们把它标记为没有价值……这给我的印象是,苹果故意为iPhone 6省略了一个额外的插槽。我的猜测是,他们现在希望2x插槽用于iPhone 6,也许他们正在减少对iPhone 4s的支持,因为它太老了。

如果你真的想继续支持iPhone 4s,我建议在2x插槽中使用iPhone 6大小的图像,然后使用以下方法加载你的图像:

代码语言:javascript
运行
复制
+(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 4s)也不会损失太多质量。

编辑:

这是苹果关系部对我的bug报告的回答:

基于以下方面,我们没有解决此问题的计划:

我们在IB中引入了size类。因此,我们希望开发人员使用具有图像视图的XIB,该视图控制如何加载和显示图像。如果他们绝对必须为所有可能的屏幕尺寸提供像素完美的图像,那么他们需要像你建议的那样做,并确定加载自己的特定资源。

我们现在关闭此报告。

如果您对解决方案有疑问,或者这对您来说仍然是一个关键问题,请使用该信息更新您的错误报告。

请务必定期检查新的苹果版本是否有可能影响此问题的任何更新。

票数 2
EN

Stack Overflow用户

发布于 2014-10-28 17:19:33

添加640*1136的图像,因为ip6与ip5而不是ip4成正比,iPhone6也有@3x的选项

票数 0
EN

Stack Overflow用户

发布于 2014-10-28 17:28:20

你不能将@2x图片添加到你的资源中,并希望它能适合你的所有尺寸。的背景。iP4和iP5只是不同,所以你必须为iP4使用两个assets regular/@2x,为iP5/6使用regular/@2/@3,因为它们有相同的比例(通用情况)。

另一种方式是设置@2xR4,但没有@2x@2x retina,因为它们是相同的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26604477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档