UIScreen.nativeBounds incorrect on iPhone 6 without new launch images

Originator:justatheory
Number:rdar://18460482 Date Originated:2014-09-25
Status:Open Resolved:
Product:iOS SDK Product Version:8.0 (12A365)
Classification: Reproducible:Always
 
Summary:
The documentation for UIScreen says of nativeBounds:

> The bounding rectangle of the physical screen, measured in pixels. (read-only)

However, for an app not updated for iOS 8, on iPhone 6, the size of UIScreen.mainScreen.nativeBounds is set to 640 x 1136. It's only once new launch images for the iPhone 6 are added that it correctly returns 750 x 1334.

Therefore, either this API must be updated to return the actual physical bounds, or the documentation should be updated to reflect that the values are dependent on the *logical* screen size, not the *physical* screen size.

Note that the same issue applies to UIScreen.mainScreen.bounds (though in points, not pixels), but I assume it is more correct that it represent the logical size.

Steps to Reproduce:
Put this into an app built for an iPhone 5:
 
       NSLog(@"%@", [NSValue valueWithCGRect:UIScreen.mainScreen.nativeBounds]);

Run it on an iPhone 6. It will emit 

    NSRect: {{0, 0}, {640, 1136}}

Add launch images for the iPhone 6 and run again. It will now emit:

    NSRect: {{0, 0}, {750, 1334}}


Expected Results:
    NSRect: {{0, 0}, {750, 1334}}


Actual Results:
    NSRect: {{0, 0}, {640, 1136}}


Version:
iOS 8.0 (12A365)

Notes:


Configuration:
iPhone 6 64GB

Attachments:

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!