2012-10-11 16 views
6

Do ekranu ładowania aplikacji i ekranu powitalnego użyłem dwóch różnych metod, aby odpowiednio wyświetlić obrazy z iPhone 3, iPhone 4 i iPhone 5.iOS Colorwithpattern - używanie niestandardowego obrazu iPhone5

Aby wyświetlić ekran ładowania, wystarczy dodać do swojego obrazu wartość -568h @ 2x, aby obsłużyć iPhone5.

Dla ekranu startowego użyłem serii przypadków (jeśli wysokość ==), aby sprawdzić wysokość granic UIScreen i przesłałem odpowiedni obraz do widoku obrazu. Było dla mnie jasne, że -568h nie jest powszechnie uznawane za obraz iPhone'a 5. Dotyczy tylko ekranu ładowania.

Teraz, w moim AppDelegate, ustawiam obraz tła. Wszystkie moje subviews mają przezroczyste tło, więc powinny pokazywać obraz tła. Najczęstszym problemem jest tutaj ustawienie obrazu tła.

Po prostu przekazując w "Background.png" Dodanie -568h @ 2x na końcu nazwy pliku nie działa. Wykona ekran nie-siatkówkowy i 3,5-calowy wyświetlacz siatkówki, ale nie pojawi się na wyświetlaczu 4-calowym.

tj:

self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]]; 

Jeśli używam powyższy fragment kodu, obraz iPhone4 jest używany zamiast obrazu iPhone5 i nie jest to, co chcę.

Zacząłem próbować zrobić to samo, co ja z ekranem powitalnym. Miałem kilka przypadków, jeżeli:

CGFloat height = [UIScreen mainScreen].currentMode.size.height; 

if (height == 1136) 
{ 
    //Choose image here 
} 
else if (height == 960) 
{ 
    //Choose image here 
} 
else if (height == 480) 
{ 
    //Choose image here 
} 
self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:chosenImage]]; 

ale funkcja colorWithPatternImage uważa, że ​​chosenImage idzie o 1 punkt = 1 piksel. W efekcie otrzymuję obraz nietypiński, który próbuje się zmieścić na ekranie iPhone'a 5. Jak wygląda exaclty? Wygląda na to, że tylko górny lewy kwadrant obrazu, który chciałem, jest wyświetlany na całym ekranie iPhone'a 5. Wygląda na to, że nie zastosowano skalowania siatkówki.

Potrzebuję iPhone'a, aby rozpoznać, że mam na zdjęciu iPhone'a 5, który może być użyty jako tło. Jak mam to zrobic?

Odpowiedz

7

znalazłem ten kod here, może to pomaga:

UIImage *tmpImage = [UIImage imageNamed:@"[email protected]"]; 
UIImage *backgroundImage = [UIImage imageWithCGImage:[tmpImage CGImage] 
               scale:2.0 
             orientation:UIImageOrientationUp]; 
self.window.backgroundColor = [UIColor colorWithPatternImage:backgroundImage]; 
Powiązane problemy