How to enable native resolution for apps on iPhone 6 and 6 Plus?
Asked Answered
P

8

194

Xcode 6 GM now includes simulators for iPhone 6 and 6 Plus, and by default they run apps in a scaled mode.

To enable the new screen size I tried adding [email protected] which seems to do a part of the trick since the app now fails to run at all, with the error "Unable to run app in Simulator – An error was encountered while running (Domain = LaunchServicesError, Code = 0)".

Has anyone figured out how to get an app actually run in the 6/6+ resolution?

Paginate answered 9/9, 2014 at 23:13 Comment(4)
As others have said, the trick is to add a launch image of the right size to your project. I wrote up a quick guide of how to add a launch image so that you can display iPhone 6 resolution here.Microprint
this worked for me #25755943Nadeau
The naming of images is different for iphone 6/6+. For me just adding the launch image for 6 and 6+ worked perfectly. Look at this answer for the correct naming convention: https://mcmap.net/q/136554/-how-do-i-create-launch-images-for-iphone-6-6-plus-landscape-only-appsCauda
Is there any alternative instead of using LaunchScreen?Charlettecharley
L
218

You can add a launch screen file that appears to work for multiple screen sizes. I just added the MainStoryboard as a launch screen file and that stopped the app from scaling. I think I will need to add a permanent launch screen later, but that got the native resolution up and working quickly. In Xcode, go to your target, general and add the launch screen file there.

Launch Screen File

Layfield answered 10/9, 2014 at 0:14 Comment(8)
This is probably the best solution if you are using a single storyboard that handles all devices. My answer is appropriate if you are not using a single storyboard or you need separate, explicit launch images.Whoa
I need to set explicit launch images for iPhone 6 and 6 Plus, is there a naming convention if I don't want to use asset catalog?Schear
@Radif Sharafullin There are some instructions here on how to name the launch images: developer.apple.com/library/prerelease/ios/documentation/iPhone/…. Scroll all the way to the bottom for launch image naming pattern.Layfield
I had luck by adding a "UILaunchStoryboardName" entry to info.plist. It even worked from an Xcode 5.1 build.Participation
Keep in mind that once you migrate to LaunchImage, iOS will no longer stretch your iPhone-5 app to iPhone-6 (and 6+). Which can break your App's UI if you are making your views with absolute size like 320px in width and not using relative size using autolayouts.Bonanza
atulkhatri, I have found that to happen! Anyway to fix this?Schwann
@Schwann design responsively.Luellaluelle
OMG you're genius. You saved my whole nightBabb
W
116

If you are using asset catalogs, go to the LaunchImages asset catalog and add the new launch images for the two new iPhones. You may need to right-click and choose "Add New Launch Image" to see a place to add the new images.

The iPhone 6 (Retina HD 4.7) requires a portrait launch image of 750 x 1334.

The iPhone 6 Plus (Retina HD 5.5) requires both portrait and landscape images sized as 1242 x 2208 and 2208 x 1242 respectively.

Whoa answered 10/9, 2014 at 0:3 Comment(7)
Wish I could choose two right answers since this seems all very correct. Haven't yet started using asset catalogs (well, just tried unsuccessfully to adopt one — somehow the app didn't find the launch images there) but assigning the launch screen file was an easy fix here.Paginate
It should be possible to add the right launch images without using asset catalogs. But I don't know offhand how to reference them in the Info.plist.Whoa
Do I need to actually add an image? I turned these on and it's still scaling.Nineteenth
Yes, you must actually add the images (or use the new "Launch Screen File" (but that's only for iOS 8).Whoa
Does anyone here know why the 6 plus image's resolution needs to be larger than the actual resolution of the device itself? And also why the 6 plus requires both a portrait and landscape, but the 6 doesn't require but the portrait?Ontogeny
@Ontogeny The plus renders to a larger target and then scales down the render to the actual screen size, same technique as the retina MacBook Pro's. Also, the Plus can actually launch apps in landscape, no other iPhone canLaveralavergne
I tried this, and it didn't work: #43199731 Any idea why? Thanks.Ultimogeniture
L
103

I've made basic black launch screens that will make the app scale properly on the iPhone 6 and iPhone 6+:

iPhone 6 Portrait

iPhone 6 Plus Portrait

If you already have a LaunchImage in your .xcassett, open it, switch to the third tab in the right menu in Xcode and tick the iOS 8.0 iPhone images to add them to the existing set. Then drag the images over:

enter image description here

Lutenist answered 13/9, 2014 at 8:59 Comment(0)
C
52

I didn't want to introduce an asset catalog.

Per the answer from seahorseseaeo here, adding the following to info.plist worked for me. (I edited it as a "source code".) I then named the images [email protected] and [email protected]

<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>
Craver answered 12/9, 2014 at 2:30 Comment(11)
This answer is great. It allows using the images easily to transition from the splash screen to the app. No other solution (asset catalog or story board) allows this to be done as easily.Fork
Worked for me (thanks!) but it stopped recognizing the 568h@2x launch image, deactivating the iphone 5 size support. I just had to add another item similar to the two above but specifying 568h. (specific fields: Default-568h, {320, 568})Funches
The same applies to the iPhone 4S.Ginelle
just made the experience (on the simulator) that the specified image files don't even need to exist.Bionomics
I have a problem with this technique on iPhone 6: it shows first the startup screen [email protected] and then briefly shows Default-Portrait@2x~iphone.png. Any idea?Rosewater
how do you "ADD" this to your plist? not sure how that's done? can someone explain?Barcus
To support iPhone 5 4inch screen, just add the following <dict> <key>UILaunchImageMinimumOSVersion</key> <string>7.0</string> <key>UILaunchImageName</key> <string>Default-568h</string> <key>UILaunchImageOrientation</key> <string>Portrait</string> <key>UILaunchImageSize</key> <string>{320, 568}</string> </dict>Roberson
did you need to add iPads as well for universal support?Nottinghamshire
Works perfect for me. Just a tinsy, tiny advice: the space in {414, 736} is important. If you don't put it, it won't work.Childbearing
walapu is correct. You need this for 4s under ioS 8: <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>Catt
To support startup in landscape on an iPhone 6+, I added this: <dict> <key>UILaunchImageMinimumOSVersion</key> <string>8.0</string> <key>UILaunchImageName</key> <string>Default-414h</string> <key>UILaunchImageOrientation</key> <string>Landscape</string> <key>UILaunchImageSize</key> <string>{736, 414}</string> </dict> In the 6+ simulator, only a black screen in shown. Does anyone know how to get landscape 6+ launch images working without asset catalogs?Catt
C
21

Note that iPhone 6 will use the 320pt (640px) resolution if you have enabled the 'Display Zoom' in iPhone > Settings > Display & Brightness > View.

Carol answered 23/9, 2014 at 9:30 Comment(2)
I wish this was better documented!Schwann
You just saved my day. I tried all the other solutions but my issue was only that the device was in Zoomed mode.Uxmal
N
8

Do the following (see in photo)

  1. Goto asset catalog
  2. right-click and choose "Add New Launch Image"

    • iPhone 6 -> 750 x 1334
    • iPhone 6 Plus -> 1242 x 2208 and 2208 x 1242

enter image description here

Nubilous answered 28/12, 2014 at 8:2 Comment(0)
E
3

An error was encountered while running (Domain = LaunchServicesError, Code = 0)

Usually this indicates that installd returned an error during the install process (bad resources or similar).

Unfortunately, Xcode does not display the actual underlying error (feel free to file dupes of this known bug).

You should check ~/Library/Logs/CoreSimulator/CoreSimulator.log which will log the underlying error for you.

Elute answered 10/9, 2014 at 6:59 Comment(1)
Thanks! Wasn't aware of this extra insight into the root cause of the error. The detailed log doesn't say that much to me but at least I have something to attach to my radar filing.Paginate
P
0

If you are using asset catalog, and have multiple targets both using same asset catalog file, be sure that this file has checked both targets in the right panel in xcode.

That was my problem.

enter image description here

Panamerican answered 24/8, 2016 at 6:56 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.