ChatGPT解决这个技术问题 Extra ChatGPT

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

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 Default-667h@2x.png 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?

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.
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: stackoverflow.com/a/27473877/1568532
Is there any alternative instead of using LaunchScreen?

D
David L

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.

https://i.stack.imgur.com/I8W4u.png


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.
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?
@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.
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.
@bobo2000 design responsively.
r
rmaddy

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.


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.
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.
Do I need to actually add an image? I turned these on and it's still scaling.
Yes, you must actually add the images (or use the new "Launch Screen File" (but that's only for iOS 8).
@trumpetlicks 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 can
A
Andrew

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:

https://i.stack.imgur.com/iHy2a.png


W
William Jockusch

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 Default-667h@2x.png and 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>

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.
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})
The same applies to the iPhone 4S.
just made the experience (on the simulator) that the specified image files don't even need to exist.
I have a problem with this technique on iPhone 6: it shows first the startup screen Default-667h@2x.png and then briefly shows Default-Portrait@2x~iphone.png. Any idea?
t
tomi44g

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


I wish this was better documented!
You just saved my day. I tried all the other solutions but my issue was only that the device was in Zoomed mode.
U
Umar Farooq

Do the following (see in photo)

Goto asset catalog right-click and choose "Add New Launch Image" iPhone 6 -> 750 x 1334 iPhone 6 Plus -> 1242 x 2208 and 2208 x 1242

https://i.stack.imgur.com/euVqI.png


J
Jeremy Huddleston Sequoia

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.


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.
l
luky

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.

https://i.stack.imgur.com/pC8TS.png