支持iPhone 6和iPhone 6+,具有不同的启动/启动屏幕图像,适用于iPad纵向和横向方向

时间:2014-09-17 09:20:09

标签: ios cocoa-touch ios8 iphone-6 iphone-6-plus

我从可用的文档和我的测试中了解到的是

  1. iPhone 6和6 Plus上的所有现有应用都以兼容模式运行, 这意味着API(如[UIScreen mainScreen] .bounds)将 返回320x568(iPhone 5 / 5s)仍然在新的iPhone(6/6 Plus)和 所有UI都按iOS缩放到正确的分辨率。

  2. 为了支持iPhone 6 / 6Plus,我们需要为Launch Screen创建xib (File-> New-> File-> UserInterace-> Launch Screen)并设置nib文件 作为“启动屏幕文件”。

  3. 我们可以在Launch screen nib文件的基础上为启动画面设置不同的图像 在avaialble规模等级。 [基本上是Any的组合,常规

  4. 无法区分纵向iPad和iPad 在横向(两者都是规则宽度的常规高度)。 此外,没有办法区分iPhone 4/4和iPhone 5 /秒。

  5. 有没有办法可以支持iPhone 6/6 Plus模式,还能为纵向和iPad横向提供不同的iPad发布图像?

    另请参阅此处iOS 8 size classes for iPad landscape

    中的类似问题

3 个答案:

答案 0 :(得分:34)

您无需使用启动屏幕文件即可使您的App iPhone 6/6 +分辨率兼容。相反,您可以选择LaunchImage资产作为启动图像源。

可在“目标:

”下的“应用图标和启动图像”中找到

enter image description here

如果没有LaunchImage资产,只需转到Images.xcassets,进行辅助点击(右键单击)并选择“新启动图像”:

enter image description here

结果是这样的:

enter image description here

现在只需拖放您想要支持的特定分辨率的图像,并将创建的LaunchImage资源设置为源。

希望有所帮助

干杯

答案 1 :(得分:24)

资产目录目前在的iPhone上以横向模式工作。我得到了苹果支持的回应:

  

"在资产目录和应用中存在涉及启动图像的错误   在iPhone上推出风景。在幕后,资产   目录编译器生成相同的UILaunchImages键[1]   您在指定时添加的最终Info.plist   手动启动图像。每个启动图像的子键之一   在UILaunchImages键下指定的是UILaunchImageOrientation   它始终由资产目录编译器设置为Portrait。这个   因为iPhone上的应用程序始终以纵向方式启动   方向[2]。但是,iOS应用程序启动器决定了   您的UISupportedInterfaceOrientations仅包含   UIInterfaceOrientationLandscapeLeft和   UIInterfaceOrientationLandscapeRight,它只会查找横向   在UILaunchImages键下启动图像,但没有找到它。

     

由于无法强制资产目录编译器指定   Landscape iPhone的UILaunchImageOrientation子键{。}}   启动图像,您应该继续指定您的启动图像   像以前一样编辑应用的信息属性列表。"

答案 2 :(得分:-1)

资产目录解决方案不适用于iPad Pro。 另一种方法是使用间隔视图将正确的图像放置在可见区域中,然后将另一个移出屏幕(请参阅我对类似问题here的原始回答)。

您无法针对不同的屏幕尺寸(iPhone 4,iPhone X等)提供不同的图像,但是如果您想要 iPhone和iPad的不同图像纵向和横向。该解决方案适合您。

如果您想尝试一下,我创建了一个example project on github。 它适用于iPad和iPhone。

Constraints in Interface Builder

重要的约束条件是

PortraitSpacer.width ≤ 5 × view.width
PortraitSpacer.width ≤ 5 × view.height

LandscapeSpacer.width ≥ 5 × view.width
LandscapeSpacer.width ≥ 5 × view.height

PositionSpacer.width = 5 × view.width

其中view.widthview.height是主视图的宽度和高度。

PortraitSpacer将肖像图像放置在5 × min(view.width, view.height)处, LandscapeSpacer将风景图像放置在5 × max(view.width, view.height)PositionSpacer在纵向模式下与PortraitSpacer的宽度相同,在横向模式下与LandscapeSpacer的宽度相同。

我们将所有内容乘以5,所以两个图像不会重叠。这适用于满足以下条件的所有设备

5 × min(view.width, view.height) + max(view.width, view.height) ≤ 5 × max(view.width, view.height)

在横向模式下,这意味着

5 / 4 ≤ view.width / view.height

当前所有设备都是这种情况:iPad的宽高比最低,为4:3,但仍大于5:4。

您当然可以在资产目录中为每个设备(iPhone,iPad)配置图像。