2014-11-10 11 views
6

to nie wystarczy dostarczyć tylko obrazu o rozdzielczości 3x (np. Dla widoku lub przycisku) w Xcode, aby wyglądało dobrze na iPhonie 5,6 i 6plusach urządzeniach (tj. Pozostawienie 1x i 2x w pustym zestawie zdjęć)Czy wystarczy dostarczyć obraz 3x tylko dla wszystkich wersji na telefonie iPhone?

Moje rozumowanie jest to, że 1x obraz może wyglądać rozmyte na 6 Plus ale 3x obraz powinien wyglądać dobrze na 5

Zasadniczo pytam tak, że można komunikować się tym samym do mojego grafika i powinien on być w porządku z dostarczający rozmiar singe zamiast trzech rozmiarów dla wszystkich zdjęć

+0

Nie rozumiem tego powodu: jeśli dostarczasz 1x, 2x i 3x co najmniej 2x będzie być używane przez nowsze iPhone'y. Może to być wygodne, jeśli będziemy w stanie dostarczyć tylko 3-krotnie i pozwolić Xcode przeskalować go automatycznie, ale osobiście nie widzę go jeszcze jako potrzebnej funkcji. Pamiętaj, że aplikacje App Store nie mogą w tej chwili być ograniczone do iPhone'a 5+. W każdym razie, możesz szybko utworzyć narzędzie dla swojego projektanta lub dla siebie, aby skopiować skalę (i zmienić nazwę w razie potrzeby) wszystkie obrazy, jeśli jest to jedyny problem. –

+0

Jestem pewna, że ​​nie powinieneś dostarczać żadnego obrazu '@ ​​1x', jeśli twoja aplikacja nie działa na iPadach innych niż siatkówka. nie ma iPhone'a nie-siatkówki obsługiwanego od iOS7. – holex

+0

@Fogmeister, w iOS7 +: 1. nie ma obsługiwanego iPoda Touch innego niż retina; 2. iPhone4S ma wyświetlacz siatkówki, 3. iPady nie-siatkówkowe uruchamiają aplikacje iPhone'a w trybie siatkówki i nie można skalować - dlatego: w przypadku aplikacji na iPhone'a w iOS7 + obrazy "@ 1x" mogą być całkowicie ignorowane . – holex

Odpowiedz

8

to ma zadane i odpowiedzi wielokrotnie dotyczących 2x aktywów, a odpowiedź tak naprawdę się nie zmieniło (ale trudno jest wyśledzić zduplikowane pytania, gdy publikuję z mojego telefonu).

Jeśli wysyłasz aktywa o wyższym współczynniku skali niż urządzenie docelowe, będą wyświetlane poprawnie. Jednak zmniejszanie ich w czasie rzeczywistym wiąże się z kosztami wydajności - zużywają więcej pamięci, trwają dłużej, aby przesłać je na GPU, zabierają czas GPU na renderowanie. Niektóre z tych kosztów są trywialne, inne nie. (Pamiętaj, że obraz 2x to 4x dane 1x, a obraz 3x to 2,25x dane 2x). I sumują się za każde zdjęcie w twojej aplikacji.

Co najważniejsze, urządzenia o niższych współczynnikach skali to te, które mają mniej zasobów procesora/GPU/pamięci do wydania na skalowanie w dół.

Co robić? Cóż, jeśli nie chcesz, aby twój artysta zajmował się wieloma czynnikami skali, po prostu zamów grafikę 3x i skaluj ją samodzielnie w Photoshopie (lub heck, a nawet Preview) przed wysyłką. Może nie wyglądać tak ładnie, jak gdyby twój artysta modyfikował go dla każdego rozmiaru, ale będzie wyglądał tak dobrze, jak skalowanie w czasie rzeczywistym bez kosztów wydajności podczas pracy.

Lub, z Xcode 6, możesz umieścić plik PDF w swoim katalogu zasobów, a Xcode automatycznie wygeneruje pliki PNG dla każdego rozmiaru w czasie kompilacji. (Jest to funkcja Xcode, a nie iOS, więc działa, nawet jeśli kierujesz na system iOS 7.)

0

Problem z tym pomysłem polega na tym, że w systemie iOS 8 iPhone 4S jest nadal obsługiwany i ma inną wersję współczynnik ect niż co drugi iPhone. Wyświetla obraz w rozdzielczości 320 x 480 pikseli, więc tworzenie obrazów pasujących do tego nie będzie wyglądało ziarnisto. Pozostałe 3 rozmiary ekranu będą działać, jeśli zastosujesz skalę 3x, która będzie wynosiła 1920x1080 dla każdej strony i zmniejszysz rozmiar ekranu 4in i 4.7in. Prawdopodobnie będziesz potrzebować 2 story story dla aplikacji (jedna dla 3.5in, a druga dla 3 innych rozmiarów ekranu). Automatyczne dopasowywanie w rzeczywistości nie zadziałałoby w tym przypadku, chyba że zmieniono obraz obiektu UII, ponieważ miałby on skróconą długość przy zachowaniu tej samej szerokości.

EDIT: zmieniono rozmiar ekranu iPhone 6+ do odpowiedzialności za 1.15x dół skalowania i zmienił współczynnik oddawania dopasować komentarz poniżej

+2

iPhone 4s to 2x wyświetlacz Retina, a nie 1x. Ostatni iPhone nie-Retina to 3GS, nieobsługiwany od wersji iOS 7. – rickster

Powiązane problemy