2012-09-18 7 views
12

Einige meiner Apps verwenden benutzerdefinierte Bilder als Hintergrund. Was ist der richtige Weg, um die Bildschirmgröße zu überprüfen, um das richtige Bild zu platzieren?Wie verwalte ich Hintergrundbilder für das iPhone 5?

Sollte es so etwas wie dies in viewDidLoad sein:

if ([UIScreen mainScreen] == 2.0) 
{ 
    UIImage * backgroundImage = [UIImage imageNamed:@"[email protected]"]; 
    backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage]]; 
} 
else 
{ 
    UIImage * backgroundImage = [UIImage imageNamed:@"bgimage.png"]; 
    backgroundImageView = [[UIImageView alloc] iniWithImage:backgroundImage]]; 
} 

Irgendwelche Tipps/Beratung ist sehr willkommen!

Danke!

Antwort

16

Der folgende Code überprüft die Größe/Grenzen des Bildschirms. Wenn der Bildschirm 586 Punkte hat (denken Sie daran, dass der Bildschirm wegen Retina in Punkten gemessen wird), dann wissen wir, dass es sich um das neue 4-Zoll-Retina-Display handelt.

if ([[UIScreen mainScreen] bounds].size.height == 568) 
{ 
    UIImage * backgroundImage = [UIImage imageNamed:@"[email protected]"]; 
    backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage]; 
} 
else 
{ 
    UIImage * backgroundImage = [UIImage imageNamed:@"bgimage.png"]; 
    backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage]; 
} 

Siehe iOS 6 apps - how to deal with iPhone 5 screen size? auch

+2

Sie können den "@ 2x" - und den .png-Text aus den Bilddateinamen entfernen und die Dinge sollten funktionieren. es ist normalerweise keine gute Idee, "@ 2x" zu setzen, da das unter der Haube von imageNamed gehandhabt wird: wie auch immer – Kevlar

+0

wohin würde das gehen? "- viewdidLoad" – Gabriel

+0

Ja. Der Code ist im Grunde das, was Luke in die ursprüngliche Frage geschrieben hat, wo er nach etwas fragt, das er in 'viewDidLoad einfügen kann:' – Bryan

1

Bryans Antwort oben für mich gearbeitet, mit der Ausnahme, dass ich hatte

[self.bgImageView setImage:backgroundImage]; 

statt

backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage]; 

das richtige Bild zeigt nur, wenn ich zu verwenden, Verwenden Sie das ehemalige.

+0

'backgroundImageView' war nur ein Name um zu veranschaulichen, wie Sie die if-Anweisung schreiben. Es wurde von Luke in Frage gestellt. Nicht etwas, das Sie in Ihrem eigenen Programm erwarten. Aus dem gleichen Grund ist 'bgImageView' nur ein Name in Ihrem Programm, wird für niemanden anders funktionieren, es sei denn, sie haben den gleichen Namen gewählt. – Bryan