繁体   English   中英

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

[英]Supporting iPhone 6 and iPhone 6+ with different launch/splash screen image for iPad Portrait and Landscape orientations

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

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

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

  3. 我们可以根据avaialble size类在Launch screen nib文件中为启动画面设置不同的图像。 [基本上任意,常规和紧凑的组合]

  4. 无法区分纵向iPad和横向iPad(均为常规宽度常规高度)。 此外,没有办法区分iPhone 4/4和iPhone 5 / s。

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

另请参阅iOS风格的iOS 8大小类中的类似问题

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

它可以在您的目标下的“应用程序图标和启动图像”中找到:

在此输入图像描述

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

在此输入图像描述

结果是这样的:

在此输入图像描述

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

希望能帮助到你

干杯

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

“有一个错误涉及在iPhone上横向启动的资产目录和应用程序中的启动图像。在幕后,资产目录编译器在最终的Info.plist中生成相同的UILaunchImages密钥[1],当您使用时手动指定启动图像。在UILaunchImages键下指定的每个启动图像的一个子键是UILaunchImageOrientation,它总是被资产目录编译器设置为Portrait。这是有道理的,因为iPhone上的应用程序总是以纵向方式启动[2]。但是,iOS应用程序启动程序决定由于您的UISupportedInterfaceOrientations仅包含UIInterfaceOrientationLandscapeLeft和UIInterfaceOrientationLandscapeRight,因此它只会在UILaunchImages键下查找横向启动图像,但它找不到它。

由于无法强制资产目录编译器为iPhone启动映像的UILaunchImageOrientation子键指定Landscape ,因此您应该像以前一样通过编辑应用程序的信息属性列表来继续指定启动映像。

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

您无法为不同的屏幕尺寸(iPhone 4,iPhone X,...)提供不同的图像,但如果您想要iPhone和iPad的 不同图像以及纵向和横向的不同图像,此解决方案适合您。

如果你想尝试一下,我在github上创建了一个示例项目 它适用于iPad和iPhone。

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)配置图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM