如何为 iPhone 6 和 6 Plus 上的应用启用原生分辨率?

Posted

技术标签:

【中文标题】如何为 iPhone 6 和 6 Plus 上的应用启用原生分辨率?【英文标题】:How to enable native resolution for apps on iPhone 6 and 6 Plus? 【发布时间】:2014-11-03 11:36:52 【问题描述】:

Xcode 6 GM 现在包含适用于 iPhone 6 和 6 Plus 的模拟器,默认情况下它们以缩放模式运行应用程序。

为了启用新的屏幕尺寸,我尝试添加Default-667h@2x.png,这似乎起到了一定的作用,因为应用程序现在根本无法运行,并出现错误“无法在模拟器中运行应用程序 - 时遇到错误”正在运行(域 = LaunchServicesError,代码 = 0)”。

有没有人想出如何让应用以 6/6+ 分辨率实际运行?

【问题讨论】:

正如其他人所说,诀窍是为您的项目添加合适大小的启动图像。我在这里写了how to add a launch image so that you can display iPhone 6 resolution 的快速指南。 这对我有用***.com/questions/25755443/… iphone 6/6+的图片命名不同。对我来说,只需添加 6 和 6+ 的启动图像就可以完美地工作。查看此答案以了解正确的命名约定:***.com/a/27473877/1568532 除了使用 LaunchScreen 之外,还有其他选择吗? 【参考方案1】:

您可以添加看起来适用于多种屏幕尺寸的启动屏幕文件。我刚刚将 MainStoryboard 添加为启动屏幕文件,这阻止了应用程序的缩放。我想我稍后需要添加一个永久启动屏幕,但这可以提高原始分辨率并快速运行。在 Xcode 中,转到您的目标,一般并在那里添加启动屏幕文件。

【讨论】:

如果您使用一个处理所有设备的故事板,这可能是最好的解决方案。如果您不使用单个故事板,或者您需要单独的、明确的启动图像,我的回答是合适的。 我需要为 iPhone 6 和 6 Plus 设置明确的启动图像,如果我不想使用资产目录,是否有命名约定? @Radif Sharafullin 这里有一些关于如何命名启动图像的说明:developer.apple.com/library/prerelease/ios/documentation/iPhone/…。一直滚动到底部以获取启动图像命名模式。 请记住,一旦您迁移到LaunchImage,iOS 将不再将您的 iPhone-5 应用扩展到 iPhone-6(和 6+)。如果您使用绝对大小(例如宽度为 320 像素)而不是使用自动布局使用相对大小来制作视图,这可能会破坏您的应用程序的 UI。 @bobo2000 响应式设计。【参考方案2】:

如果您正在使用资产目录,请转到 LaunchImages 资产目录并为两款新 iPhone 添加新的启动图像。您可能需要右键单击并选择“添加新启动图像”才能看到添加新图像的位置。

iPhone 6 (Retina HD 4.7) 需要 750 x 1334 的纵向启动图像。

iPhone 6 Plus (Retina HD 5.5) 要求纵向和横向图像的尺寸分别为 1242 x 2208 和 2208 x 1242。

【讨论】:

希望我能选择两个正确的答案,因为这看起来都非常正确。尚未开始使用资产目录(好吧,只是尝试采用资产目录但未成功 - 不知何故,应用程序没有在那里找到启动图像),但在这里分配启动屏幕文件很容易解决。 应该可以在不使用资产目录的情况下添加正确的启动图像。但我不知道如何在 Info.plist 中引用它们。 我需要实际添加图像吗?我打开了这些,它仍在缩放。 是的,您必须实际添加图像(或使用新的“启动屏幕文件”(但这仅适用于 iOS 8)。 @trumpetlicks plus 渲染到更大的目标,然后将渲染缩小到实际屏幕尺寸,与视网膜 MacBook Pro 的技术相同。此外,Plus 实际上可以横向启动应用程序,其他 iPhone 不能【参考方案3】:

我制作了基本的黑色启动屏幕,可以让应用在 iPhone 6 和 iPhone 6+ 上正常缩放:

iPhone 6 Portrait

iPhone 6 Plus Portrait

如果您的 .xcassett 中已有 LaunchImage,请打开它,切换到 Xcode 右侧菜单中的第三个选项卡,然后勾选 iOS 8.0 iPhone 图像以将它们添加到现有集合中。然后把图片拖过来:

【讨论】:

【参考方案4】:

我不想介绍资产目录。

根据 seahorseseaeo here 的回答,将以下内容添加到 info.plist 对我有用。 (我将其编辑为“源代码”。)然后我将图像命名为 Default-667h@2x.png 和 Default-736h@3x.png

<key>UILaunchImages</key>
<array>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-667h</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>375, 667</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-736h</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>414, 736</string>
    </dict>
</array>

【讨论】:

这个答案很棒。它允许使用图像轻松地从启动屏幕过渡到应用程序。没有其他解决方案(资产目录或故事板)可以如此轻松地做到这一点。 为我工作(谢谢!)但它停止识别 568h@2x 启动图像,停用 iphone 5 尺寸支持。我只需要添加另一个类似于上述两个但指定 568h 的项目。 (具体字段:Default-568h320, 568 这同样适用于 iPhone 4S。 刚刚(在模拟器上)体验到指定的图像文件甚至不需要存在。 我在 iPhone 6 上遇到了这种技术的问题:它首先显示启动屏幕 Default-667h@2x.png,然后短暂显示 Default-Portrait@2x~iphone.png。有什么想法吗?【参考方案5】:

请注意,如果您在 iPhone > 设置 > 显示和亮度 > 视图中启用了“显示缩放”,iPhone 6 将使用 320pt (640px) 分辨率。

【讨论】:

我希望这有更好的记录! 你刚刚拯救了我的一天。我尝试了所有其他解决方案,但我的问题只是设备处于缩放模式。【参考方案6】:

执行以下操作(见照片)

    转到资产目录

    右键单击并选择“添加新的启动图像”

    iPhone 6 -> 750 x 1334 iPhone 6 Plus -> 1242 x 2208 和 2208 x 1242

【讨论】:

【参考方案7】:

运行时遇到错误(域 = LaunchServicesError,代码 = 0)

这通常表明 installd 在安装过程中返回了错误(资源错误或类似情况)。

不幸的是,Xcode 没有显示实际的底层错误(请随意提交此已知错误的重复文件)。

您应该检查 ~/Library/Logs/CoreSimulator/CoreSimulator.log,它将为您记录底层错误。

【讨论】:

谢谢!不知道这种对错误根本原因的额外洞察。详细的日志并没有对我说太多,但至少我有一些东西可以附加到我的雷达文件中。【参考方案8】:

如果您正在使用资产目录,并且有多个目标都使用同一个资产目录文件,请确保该文件已在 xcode 的右侧面板中检查了这两个目标。

那是我的问题。

【讨论】:

以上是关于如何为 iPhone 6 和 6 Plus 上的应用启用原生分辨率?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 iPhone 6 / 6 Plus 仅横向应用程序创建启动图像?

如何为 iPhone 6/7 自定义边到边图像指定尺寸?

如何为 iPhone 6+、6 和 5 指定不同的尺寸?

iPhone 6和iPhone 6 Plus上的UIImageView高度缩放显示模式

iPhone 6 Plus 上的 UISplitViewController 旋转大师大师

iPhone 6 Plus 支持字体问题