【问题标题】:Creating iOS Universal App, How To Detect All 5 Resolutions?创建 iOS 通用应用程序,如何检测所有 5 种分辨率?
【发布时间】:2012-12-07 21:37:11
【问题描述】:

标题很好地说明了这一点。我正在创建一个 iOS 应用程序,并且正在添加艺术资产。我有 iPhone 低分辨率(iPhone 3GS 或更低版本)、iPhone 视网膜(iPhone 4 或更高版本)、iPhone 5、iPad 低分辨率和 iPad 高分辨率的 5 个背景。

根据设备处理加载哪个背景的最佳方法是什么?

另外,有没有办法测试所有 5 个在模拟器中的样子?当然,现在你只能测试 iPhone 和 iPad。

另外,这是一个游戏,我正在使用 cocos2d,如果这会有所作为的话。

【问题讨论】:

    标签: ios cocos2d-iphone


    【解决方案1】:

    对于cocos2D-iPhone,默认后缀如下:

    • 非视网膜 iPhone:image.png
    • 视网膜 iPhone:image-hd.png
    • 非视网膜 iPad:image-ipad.png
    • Retina iPad:image-ipadhd.png

    wiki 页面的注释:

    警告建议使用“@2x”后缀。 Apple 以特殊方式处理这些图像,这可能会导致您的 cocos2d 应用程序。

    Cocos2D 将自动检测您的硬件并加载相应的图像。您可以在 AppDelegate.m 中更改默认后缀。

    AFAIK,iPhone 5 图像没有后缀,因此您可以通过检测设备高度来手动检测和加载自定义精灵:

    CGRect screenBounds = [[UIScreen mainScreen] bounds];
    if (screenBounds.size.height == 568) {
        // code for iPhone 5
    } else {
        // code for all other iOS devices
    }
    

    正如其他人所说,您可以通过模拟器测试所有设备(硬件->设备)

    【讨论】:

    • 顺便说一句,处理所有这些图像的最佳方法是仅绘制(或从您的设计师那里获取)*-ipadhd 图像,然后使用本地简单的脚本将其转换为 -ipad 和 -hd。跨度>
    • @anatoliy_v:iPad 和 iPhone 的宽高比不一样,所以我通常让我的设计师为视网膜 iPad 和视网膜 iPhone 创建图像。然后我使用 TexturePacker 为非视网膜设备缩小两组图像。
    【解决方案2】:

    正如@Srikanth 所说,包含image.png & image@2x.png,系统会自动为高分辨率屏幕选择高分辨率的屏幕,为低分辨率屏幕选择较低的分辨率。这适用于 iPhone 和 iPad。

    对于 iPhone 5,屏幕仍然是 Retina。系统会自动选择你的 -@2x 图像。您可以在 Interface Builder 或代码中定义自动布局(或弹簧和支柱)。

    如果出于某种原因您绝对需要特定于 iPhone 5 屏幕的图像,我相信您可以添加 image-568h@2x.png,系统会自动为 4 英寸屏幕选择该图像。

    我能想到您在捆绑包中包含 -568h@2x 图像的唯一原因是用于启动图像:您需要一个特定于 4 英寸屏幕的图像。

    另外,关于模拟器:您可以测试所有 5 种分辨率。在模拟器菜单栏中(屏幕顶部)选择硬件>设备。在这里,您可以选择所有 5 种分辨率。

    【讨论】:

      【解决方案3】:

      每张图片可以有两个版本

      image.png, image@2x.png

      如果您在任何时候引用 image.png,系统将自动选择 image@2x.png,如果它是一个视网膜设备

      同样在模拟器中,你可以去Hardware->Device,然后选择你是否想看Retina。

      【讨论】:

      • iPhone 5 有什么特别之处吗?由于屏幕较长。我们也有一个特定于该尺寸的图像。谢谢。
      • 我不这么认为。屏幕尺寸可能更大,但分辨率仍然是视网膜。
      【解决方案4】:

      如果您使用的是 cocos2d,那么您需要在您的视网膜分辨率图像上使用 -hd 后缀。查看他们的wiki page 了解更多信息。

      我自己不使用 cocos2d,但从它的声音来看,iPhone 5 的屏幕分辨率的处理方式与 iPad 的屏幕分辨率处理方式相同,方法是相应地调整布局。在 stackoverflow 中搜索应该会为 cocos2d 和 iPhone 5 产生一些不错的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多