Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I create launch images for iPhone 6 / 6 Plus Landscape Only Apps?

I've got an existing landscape only app that I'm trying to add iPhone 6 / iPhone 6 Plus support for. When I was supporting iOS 6 / 7 I simply used the default-named launch portrait images with a landscape image rotated into portrait (ie. for 4" screens I created a landscape 1136x640 and then rotated to create a 640×1136 launch image.)

I'm trying to get something working for iOS 8 and iPhone 6 / 6+ and have not come up with something that works yet. Here are some things that I have tried:

  1. Follow the pattern for 4" screen launch image convention. I created [email protected] and [email protected] images. This did trick the simulator to run at proper iPhone 6/6+ resolution but when launching, the 4" screen launch image is used, not the new ones I created.
  2. Use an Asset Catalog - I create portrait launch images for iPhone 6 and iPhone 6 Plus in a LaunchImages Asset, as well as a Landscape one for iPhone 6 Plus. The iPhone 6 Plus works, but iPhone 6 just shows a black screen. (There's no way to create a iPhone 6 landscape launch image in an asset catalog)
  3. Specify UILaunchImages array in Info.plist with entries for all screen sizes (see reference https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW28). I get similar results to an Asset Catalog here. I can get iPhone 6 Plus landscape working but not iPhone 6 landscape.
like image 239
Alex Argo Avatar asked Sep 19 '14 04:09

Alex Argo


1 Answers

I found a workaround that makes landscape only launch images work on iOS 8 GM. I ended up using the UILaunchImages array in Info.plist. The trick is to get image to show up that doesn't explicitly support landscape (iPhone 4/4S, iPhone 5/5S/5C, iPhone 6) you need to specify duplicate entries. See my example below. This is for a landscape only phone app that supports both orientations for iPad. iOS 7 will fallback to the default image names.

All iPhone launch images need to be rotated into portrait orientation as usual EXCEPT for the iPhone 6 Plus launch image. It natively supports landscape orientation launch images, so you need to leave it's launch image in landscape orientation.

Here are relevant bits of your Info.plist:

<key>UILaunchImages</key> <array>     <dict>         <key>UILaunchImageMinimumOSVersion</key>         <string>8.0</string>         <key>UILaunchImageName</key>         <string>Default</string>         <key>UILaunchImageOrientation</key>         <string>Portrait</string>         <key>UILaunchImageSize</key>         <string>{320, 480}</string>     </dict>     <dict>         <key>UILaunchImageMinimumOSVersion</key>         <string>8.0</string>         <key>UILaunchImageName</key>         <string>Default</string>         <key>UILaunchImageOrientation</key>         <string>Landscape</string>         <key>UILaunchImageSize</key>         <string>{320, 480}</string>     </dict>     <dict>         <key>UILaunchImageMinimumOSVersion</key>         <string>8.0</string>         <key>UILaunchImageName</key>         <string>Default-568h</string>         <key>UILaunchImageOrientation</key>         <string>Portrait</string>         <key>UILaunchImageSize</key>         <string>{320, 568}</string>     </dict>     <dict>         <key>UILaunchImageMinimumOSVersion</key>         <string>8.0</string>         <key>UILaunchImageName</key>         <string>Default-568h</string>         <key>UILaunchImageOrientation</key>         <string>Landscape</string>         <key>UILaunchImageSize</key>         <string>{320, 568}</string>     </dict>     <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-667h</string>         <key>UILaunchImageOrientation</key>         <string>Landscape</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>     <dict>         <key>UILaunchImageMinimumOSVersion</key>         <string>8.0</string>         <key>UILaunchImageName</key>         <string>Default-736h</string>         <key>UILaunchImageOrientation</key>         <string>Landscape</string>         <key>UILaunchImageSize</key>         <string>{414, 736}</string>     </dict>     <dict>         <key>UILaunchImageMinimumOSVersion</key>         <string>8.0</string>         <key>UILaunchImageName</key>         <string>Default-Portrait</string>         <key>UILaunchImageOrientation</key>         <string>Portrait</string>         <key>UILaunchImageSize</key>         <string>{768, 1024}</string>     </dict>     <dict>         <key>UILaunchImageMinimumOSVersion</key>         <string>8.0</string>         <key>UILaunchImageName</key>         <string>Default-Landscape</string>         <key>UILaunchImageOrientation</key>         <string>Landscape</string>         <key>UILaunchImageSize</key>         <string>{768, 1024}</string>     </dict> </array> 
like image 148
Alex Argo Avatar answered Oct 19 '22 02:10

Alex Argo