2012-04-09 15 views
5

Właśnie zauważyłem interesującą rzecz podczas próby aktualizacji mojej aplikacji dla nowego ekranu Retina iPada, każda współrzędna w programie Interface Builder jest nadal oparta na oryginalnej rozdzielczości 1024x768.Współrzędne XCode dla iPada Wyświetlacze Retina

Mam na myśli to, że jeśli mam obraz 2048x1536, który pasuje do całego ekranu na ekranie, muszę ustawić jego rozmiar na 1024x768, a nie na 2048x1536.

Jestem po prostu ciekawa, czy jest to zamierzone? Czy mogę zmienić układ współrzędnych w Konstruktorze interfejsów, aby był specyficzny dla Retina? To trochę denerwujące, ponieważ niektóre z moich grafik nie są dokładnie 2x w obu szerokościach i wysokościach od ich oryginałów. Nie mogę ustawić 1/2 liczb współrzędnych, takich jak 1.5, może to być 1 lub 2 wewnątrz Konstruktora interfejsu.

Czy powinienem po prostu zrobić projekt interfejsu w kodzie w tym momencie i zapomnieć o budowaniu interfejsu? Trzymaj moją grafikę dokładnie 2x w obu kierunkach? A może po prostu z tym żyć?

Odpowiedz

4

Interfejs w systemie iOS oparty jest na punktach, a nie pikselach. Obrazy MUSZĄ być 2 razy większe niż oryginały.

Punkty Versus pikseli iOS istnieje różnica między współrzędnymi można określić w kodzie rysunku i pikselach urządzenia leżące u podstaw . Podczas korzystania z technologii natywnego rysowania, takich jak kwarc, UIKit i animacja rdzenia, użytkownik określa wartości współrzędnych, korzystając z logicznej przestrzeni współrzędnych, która mierzy odległości w punktach. Ten logiczny układ współrzędnych jest odsprzęgnięty od przestrzeni współrzędnych urządzenia przestrzeni używanej przez struktury systemowe do zarządzania pikselami na ekranie . System automatycznie mapuje punkty w logicznej przestrzeni współrzędnych na piksele w przestrzeni współrzędnych urządzenia, ale mapowanie to nie jest zawsze jedno-do-jednego. To zachowanie prowadzi do ważnego faktu, że powinieneś zawsze pamiętać:

Jeden punkt niekoniecznie odpowiada jednemu pikselowi na ekranie. Celem używania punktów (i logicznego układu współrzędnych) jest uzyskanie stałej wielkości wyjściowej niezależnej od urządzenia. Rzeczywisty rozmiar punktu nie ma znaczenia. Celem punktów jest zapewnienie stosunkowo spójnej skali, która może być użyta w kodzie do określenia rozmiaru i położenia widoków i renderowanej treści. Punkty w rzeczywistości odwzorowane na piksele to szczegół, który jest obsługiwany przez układy systemowe . Na przykład na urządzeniu z ekranem o wysokiej rozdzielczości linia o szerokości jednego punktu może w rzeczywistości wygenerować linię o szerokości dwóch pikseli na ekranie. W rezultacie, jeśli narysujesz tę samą zawartość na dwóch podobnych urządzeniach, przy czym tylko jeden z nich ma ekran o wysokiej rozdzielczości , wydaje się, że zawartość obu urządzeń jest tego samego rozmiaru.

W swoim własnym kodzie losowym punkty są najczęściej używane przez większość czasu, ale tam są czasem, kiedy trzeba wiedzieć, w jaki sposób punkty są mapowane na piksele. Na przykład na ekranie o wysokiej rozdzielczości możesz chcieć użyć dodatkowych pikseli w celu zapewnienia dodatkowych szczegółów w swoich materiałach lub po prostu chcesz dostosować położenie lub rozmiar zawartości w subtelny sposób. W systemie iOS 4 i nowszym klasy UIScreen, UIView, UIImage i CALayer udostępniają współczynnik skalowania, który informuje o zależności między punktami i pikselami dla danego obiektu. Przed iOS 4 przyjęto, że współczynnik skalowania wynosi 1,0, ale w systemie iOS 4 i nowszym może wynosić 1,0 lub 2,0, w zależności od rozdzielczości urządzenia bazowego. W przyszłości możliwe będą również inne czynniki skali.

Od http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html

1

Jest to celowe ze strony Apple, aby Twój kod stosunkowo niezależne od rzeczywistej rozdzielczości ekranu przy pozycjonowaniu elementów sterujących i tekst. Jednak, jak już zauważyłeś, może sprawić, że wyświetlanie grafiki w maksymalnej rozdzielczości dla urządzenia będzie nieco bardziej skomplikowane.

Dla iPhone'a ekran ma zawsze 480 x 320 punktów. Dla iPada jest to 1024 x 768. Jeśli twoja grafika jest odpowiednio skalowana do urządzenia, wpływ nie jest trudny do opanowania w kodzie. Nie jestem projektantem graficznym i udowodniono mi, że wymagam dostarczenia wielu zestawów ikon, obrazów uruchamianych itp., Aby zapewnić wysoką jakość.

Apple nazewnictwa standardy dla niektórych typów obrazów, które minimalizują wpływ na kodzie:

https://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html

to nie pomoże ci, gdy masz do czynienia z niestandardową grafikę inline, jednak.

Powiązane problemy