504 Stimmen

Wie entwickelt oder migriert man Anwendungen für die iPhone 5 Bildschirmauflösung?

Das neue iPhone 5 Display hat ein neues Seitenverhältnis und eine neue Auflösung (640 x 1136 Pixel).

Was ist erforderlich, um neue Anwendungen zu entwickeln oder bereits vorhandene Anwendungen auf die neue Bildschirmgröße umzustellen?

Was sollten wir beachten, um Anwendungen sowohl für die älteren Bildschirme als auch für das neue Breitbildformat "universell" zu machen?

13voto

shankar Punkte 239

Die Migration von iPhone5 und iPhone4 durch XIBs ist einfach.........

UIViewController *viewController3;
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone5screen" bundle:nil] autorelease];               
}    
else
{
     UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone4screen" bundle:nil] autorelease];
}

12voto

Shimanski Artem Punkte 1242

Ich löse dieses Problem aquí . Fügen Sie einfach das Suffix ~568h@2x zu Bildern und ~568h zu xibs hinzu. Es sind keine weiteren Laufzeitprüfungen oder Codeänderungen erforderlich.

10voto

SkeletonJelly Punkte 211

Ich hatte das neue Standard-Startbild hinzugefügt und (bei der Überprüfung mehrerer anderer SE-Antworten...) dafür gesorgt, dass meine Storyboards alle automatisch die Größe von sich selbst und Unteransichten ändern, aber die Retina 4 Zoll noch Letterbox.

Dann bemerkte ich, dass meine Info-Pliste einen Eintrag für " Bild starten " auf " gesetzt Standard.png "die ich daraufhin entfernt habe, und wie durch ein Wunder erschien das Letterboxing nicht mehr. Hoffentlich erspart das jemand anderem die gleiche Verrücktheit, die ich durchgemacht habe.

9voto

iutinvg Punkte 2699

Ich vermute, dass es nicht in allen Fällen funktioniert, aber in meinem speziellen Projekt hat es mir die Duplizierung von NIB-Dateien erspart:

Irgendwo in common.h Sie können diese Definitionen auf der Grundlage der Bildschirmhöhe vornehmen:

#define HEIGHT_IPHONE_5 568
#define IS_IPHONE   ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5)

In Ihrem Basis-Controller:

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (IS_IPHONE_5) {
        CGRect r = self.view.frame;
        r.size.height = HEIGHT_IPHONE_5 - 20;
        self.view.frame = r;
    }
    // now the view is stretched properly and not pushed to the bottom
    // it is pushed to the top instead...

    // other code goes here...
}

9voto

Bob Punkte 1321

In einem constants.h Datei können Sie diese define-Anweisungen hinzufügen:

 #define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
 #define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
 #define IS_WIDESCREEN (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568) < DBL_EPSILON) 
 #define IS_IPHONE_5 (!IS_IPAD && IS_WIDESCREEN)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X