2012-09-18 3 views
12

Niektóre z moich aplikacji używają niestandardowych obrazów jako tła. Jaki jest właściwy sposób sprawdzania rozmiaru ekranu, aby umieścić właściwy obraz?Jak mogę zarządzać obrazami tła dla iPhone'a 5?

powinno być coś takiego w viewDidLoad:

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]]; 
} 

jakieś wskazówki/porady są mile widziane!

Dzięki!

Odpowiedz

16

Poniższy kod sprawdza rozmiar/granice ekranu. Jeśli ekran ma 586 punktów (pamiętaj, że ekran jest mierzony w punktach z powodu Retiny), to wiemy, że jest to nowy 4-calowy wyświetlacz Retina.

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]; 
} 

Zobacz także iOS 6 apps - how to deal with iPhone 5 screen size?

+2

Możesz usunąć tekst "@ 2x" i .png z nazw plików graficznych, a wszystko powinno działać. zwykle nie jest dobrym pomysłem umieszczenie w nim "@ 2x", ponieważ jest to obsługiwane pod maską przez imageNamed: anyways – Kevlar

+0

gdzie to pójdzie? "- viewdidLoad" – Gabriel

+0

Tak. Kod jest w zasadzie tym, co Luke włożył w oryginalne pytanie, gdzie prosi o coś, co można wstawić w 'viewDidLoad:' – Bryan

1

odpowiedź Bryana powyżej pracował dla mnie, oprócz tego, że musiałem użyć

[self.bgImageView setImage:backgroundImage]; 

zamiast

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

prawidłowego obrazu wyświetla tylko gdybym użyj pierwszego.

+0

'backgroundImageView' to tylko nazwa ilustrująca sposób pisania instrukcji if. Zostało to postawione przez Luke'a. Nie jest to coś, czego oczekuje się od twojego programu. Z tego samego powodu, 'bgImageView' jest po prostu nazwą w twoim programie, nie będzie działać dla nikogo innego, chyba że wybrał taką samą nazwę. – Bryan