Nowy wyświetlacz iPhone'a 5 ma nowy współczynnik kształtu i nową rozdzielczość (640 x 1136 pikseli).
Co jest potrzebne do opracowania nowych lub przejścia już istniejących aplikacji do nowego rozmiaru ekranu?
O czym powinniśmy pamiętać, aby aplikacje były „uniwersalne” zarówno dla starszych wyświetlaczy, jak i nowego współczynnika proporcji ekranu panoramicznego?
Jeśli masz aplikację zbudowaną na iPhone'a 4S lub starszą wersję, będzie ona działać na iPhonie 5 w formie litery.
Aby dostosować aplikację do nowego wyższego ekranu, pierwszą rzeczą, którą należy zrobić, jest zmiana obrazu uruchamiania na: [email protected]. Jego rozmiar powinien wynosić 1136 x 640 (wys. X szer.). Tak, posiadanie domyślnego obrazu w nowym rozmiarze ekranu jest kluczem do tego, aby Twoja aplikacja zajęła cały ekran nowego iPhone'a 5 .
(Uwaga: konwencja nazewnictwa działa tylko dla obrazu domyślnego. Nazywanie innego obrazu „[email protected]” nie spowoduje załadowania go zamiast „[email protected]”. Jeśli musisz załadować różne obrazy dla różnych rozmiarów ekranu musisz to zrobić programowo.)
Jeśli masz dużo szczęścia, to może być to ... ale najprawdopodobniej będziesz musiał zrobić jeszcze kilka kroków.
W skrajnym przypadku (gdy żadne z powyższych nie wystarczy), zaprojektuj dwa Xiby i załaduj odpowiedni do kontrolera widoku.
Aby wykryć rozmiar ekranu:
źródło
Jedyną naprawdę wymaganą rzeczą jest dodanie obrazu uruchamiającego o nazwie „[email protected]” do zasobów aplikacji, a w ogólnym przypadku (jeśli masz szczęście) aplikacja będzie działać poprawnie.
Jeśli aplikacja nie obsługuje zdarzeń dotykowych, upewnij się, że okno klucza ma odpowiedni rozmiar. Obejściem tego problemu jest ustawienie odpowiedniej ramki:
Istnieją inne problemy niezwiązane z rozmiarem ekranu podczas migracji do iOS 6. Aby uzyskać szczegółowe informacje, przeczytaj Informacje o wersji iOS 6.0 .
źródło
Czasami (w przypadku aplikacji do tworzenia scenariuszy), jeśli układ będzie wystarczająco inny, warto określić inny xib w zależności od urządzenia (patrz to pytanie - musisz zmodyfikować kod, aby obsługiwał iPhone'a 5) w viewController init, ponieważ nie trzeba kręcić się przy użyciu masek automatycznej zmiany rozmiaru, jeśli potrzebujesz innej grafiki.
Jest to przydatne w przypadku aplikacji kierowanych na starsze wersje iOS.
źródło
Tutaj możesz znaleźć fajny samouczek (dla MonoTouch, ale możesz również użyć informacji dla projektów innych niż MonoTouch):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5 -ios-6-dzisiaj /
Utwórz nowy obraz dla ekranu powitalnego / domyślnego ( 640 x 1136 pikseli ) o nazwie „ [email protected] ”
W symulatorze iOS przejdź do menu Sprzęt -> Urządzenie i wybierz „ iPhone (Retina 4-calowy) ”
Twórz inne obrazy, np. Obrazy tła
źródło
Migracja iPhone5 i iPhone4 za pośrednictwem XIB jest łatwa .........
źródło
Rozwiązuję ten problem tutaj . Po prostu dodaj ~ 568h @ 2x do sufiksu i ~ 568h do xib's. Nie potrzeba więcej kontroli środowiska wykonawczego ani zmian kodu.
źródło
Dodałem nowy domyślny obraz startowy i (sprawdzając kilka innych odpowiedzi SE ...) upewniłem się, że wszystkie moje storyboardy same się zmieniają i wyświetlają się automatycznie, ale siatkówka 4 cale wciąż jest w kształcie litery.
Potem zauważyłem, że w mojej liście informacji znajdował się element zamówienia „ Uruchom obraz ” ustawiony na „ Default.png ”, który w ten sposób usunąłem i magicznie nie pojawiały się już litery. Mam nadzieję, że to ocali komuś to samo szaleństwo, które znosiłem.
źródło
Wydaje mi się, że nie zadziała we wszystkich przypadkach, ale w moim konkretnym projekcie uniknąłem powielania plików NIB:
Gdzieś w środku
common.h
możesz ustawić te definicje na podstawie wysokości ekranu:W kontrolerze podstawowym:
źródło
W
constants.h
pliku możesz dodać następujące definicje instrukcji:źródło
Aby ustalić, czy aplikacja obsługuje iPhone'a 5 Retina, użyj tego: (Może być bardziej solidny, aby zwrócić typ wyświetlacza, Retina 4S itp., Ale jak napisano poniżej, po prostu zwraca, jeśli iPhone obsługuje siatkę iOS5 jako Tak lub nie)
We wspólnym pliku „.h” dodaj:
We wspólnym pliku „.m” dodaj:
źródło
Najpierw utwórz dwa xib i dołącz wszystkich delegatów, główną klasę do,
xib
a następnie możesz wprowadzić warunek wymieniony poniżej w swoimappdelegate.m
pliku wmożesz go używać w dowolnym miejscu w programie, w zależności od wymagań, nawet na
ViewController
zajęciach. Najważniejsze jest to, że utworzyłeś dwaxib
osobne plikiiphone 4(320*480) and iphone 5(320*568)
źródło
Wypróbuj poniższą metodę w klasie singleton:
źródło
Możesz użyć tej
Auto Layout
funkcji i stworzyć projekt za pomocą ekranu iPhone'a 5 i będzie on działał zarówno na urządzeniach 4 ", jak i 3,5", ale w takim przypadku powinieneś mieć wystarczającą wiedzę na temat menedżera układu.źródło
Sprawdzanie za
bounds
pomocą568
zakończy się niepowodzeniem w trybie poziomym. iPhone 5 uruchamia się tylko w trybie pionowym, ale jeśli chcesz obsługiwać rotacje, to „sprawdzenie” iPhone'a 5 również będzie musiało obsłużyć ten scenariusz.Oto makro, które obsługuje stan orientacji:
Wykorzystanie wywołania „preferowanego trybu” pochodzi z innego posta, który przeczytałem kilka godzin temu, więc nie wpadłem na ten pomysł.
źródło
Najpierw pokaż ten obraz. Na tym obrazku pokazujesz ostrzeżenie dotyczące obsługi Retina 4, więc kliknij to ostrzeżenie i kliknij dodaj, aby ekran powitalny Retina 4 automatycznie dodawał do twojego projektu.
a po użyciu tego kodu:
źródło
Nigdy nie spotkałem się z takim problemem z żadnym urządzeniem, ponieważ miałem jedną bazę kodu dla wszystkich, bez żadnych zakodowanych wartości. To, co robię, to mieć maksymalny rozmiar obrazu jako zasób zamiast jednego dla każdego urządzenia. Na przykład miałbym jeden do wyświetlania na siatkówce i pokazałbym go jako dopasowany do kształtu, aby był to widok jak na każdym urządzeniu. Podejmowanie decyzji na temat ramki przycisku, na przykład w czasie wykonywania. W tym celu używam wartości% widoku patentu, na przykład, jeśli chcę, aby szerokość była w połowie widoku rodzica, weź 50% rodzica i to samo dotyczy wysokości i środka.
Dzięki temu nie potrzebuję nawet XIB.
źródło
Możesz użyć tej definicji, aby obliczyć, czy używasz iPhone'a 5 na podstawie rozmiaru ekranu:
następnie użyj prostej
if
instrukcji:źródło
Peter, naprawdę powinieneś rzucić okiem na Canappi, robi to wszystko dla ciebie, wszystko co musisz zrobić, to określić układ jako taki:
Stamtąd Canappi wygeneruje poprawny kod C celu, który wykrywa urządzenie, na którym działa aplikacja i użyje:
Canappi działa w połączeniu z Konstruktorem interfejsów i Story Board, z tym że ma formę tekstową. Jeśli masz już pliki XIB, możesz je przekonwertować, aby nie trzeba było ponownie tworzyć całego interfejsu użytkownika od zera.
źródło
Możesz ręcznie sprawdzić rozmiar ekranu, aby określić, na jakim urządzeniu się znajdujesz:
źródło
Możesz dodać ten kod:
źródło
scale
selektor włączonyUIScreen
i będziesz mieć przypadek, w którym kod „standardowej rozdzielczości” nie zostanie wykonany.To jest naprawdę uniwersalny kod, możesz stworzyć 3 różne scenariusze:
Ustaw swój projekt Tryb uniwersalny i ustaw główną historię iPhone'a za pomocą scenorysu iPhone5 i iPada głównego za pomocą storyboardu docelowego iPada, teraz dodaj nowy cel storyboardu dla iPhone'a i zmodyfikuj rozdzielczość dla iPhone 4s lub mniej teraz zaimplementuj swoją AppDelegate.m
iPhone4 / 4s (jest taki sam dla 3 / 3Gs) jeden dla iPhone5 i uczyń projekt uniwersalnym , z nowym celem Storyboard dla iPada, teraz w AppDelegate.m pod dodanym
didFinishLaunching
kodem:Stworzyłeś więc aplikację Universal na iPhone'a 3 / 3Gs / 4 / 4s / 5 All gen iPoda i All iPada
Pamiętaj, aby zintegrować wszystkie IMG z
myImage.png
i[email protected]
źródło
Według mnie najlepszym sposobem radzenia sobie z takimi problemami i unikaniem kilku warunków wymaganych do sprawdzania wysokości urządzenia, jest użycie ramki względnej dla widoków lub dowolnego elementu interfejsu użytkownika, który dodajesz do widoku, na przykład: jeśli dodajesz jakiś element interfejsu użytkownika, który chcesz, powinien znajdować się na dole widoku lub tuż nad paskiem tabulatorów, a następnie powinieneś wziąć początek y w odniesieniu do wysokości widoku lub względem paska tabulatorów (jeśli jest obecny), a my również mamy właściwość automatycznej zmiany rozmiaru. Mam nadzieję, że to zadziała dla ciebie
źródło
Zamiast korzystać z zestawu warunków, możesz automatycznie zmienić rozmiar widoku przy użyciu rozmiaru ekranu.
W moim przypadku chcę widok, który wypełnia przestrzeń między niektórymi polami wejściowymi u góry i niektórymi przyciskami u dołu, więc naprawiłem lewy górny róg i zmienną prawą dolną w zależności od wielkości ekranu. Moja aplikacja wypełnia widok zdjęcia zdjęciem wykonanym przez aparat, więc chcę mieć tyle miejsca, ile mogę.
źródło
Jeśli chcesz przekonwertować już istniejącą aplikację na uniwersalną, musisz wybrać odpowiedni plik xib-> pokaż Narzędzia-> Pokaż inspektora Rozmiar.
W Inspektorze rozmiarów możesz zobaczyć Automatyczną zmianę rozmiaru, za pomocą tego narzędzia możesz przekonwertować na istniejącą aplikację iOS.
źródło
Za pomocą xCode 5 wybierz „Migruj do katalogu zasobów” w Projekt> Ogólne.
Następnie użyj „Pokaż w wyszukiwarce”, aby znaleźć obraz startowy, możesz go edytować w formacie fikcyjnym (640 x 1136), a następnie przeciągnij go do katalogu zasobów, jak pokazano na poniższym obrazku.
Upewnij się, że zarówno sekcja iOS7, jak i iOS6 R4 ma obraz 640 x 1136. Następnym razem, gdy uruchomisz aplikację, czarne paski znikną, a Twoja aplikacja będzie używać 4-calowego ekranu
źródło
Warto zwrócić uwagę - w nowym Xcode musisz dodać ten plik obrazu [email protected] do zasobów
źródło
Użyj
Auto Layout
funkcji dla widoków. Dostosuje się automatycznie do wszystkich rozdzielczości.Utwórz dwa xib dla kontrolera o nazwie kontrolera z sufiksem ~ iphone lub ~ ipad. W czasie kompilacji Xcode weźmie odpowiedni xib w zależności od urządzenia.
Użyj klas rozmiarów, jeśli chcesz utworzyć pojedynczy xib zarówno dla iPhone'a, jak i iPada, jeśli widok jest wystarczająco prosty, aby przenieść go na iPhone'a i iPada.
źródło
Występuje niewielki problem podczas testowania zarówno na urządzeniu z systemem iOS, jak i na symulatorze systemu iOS. Wygląda na to, że symulator (XCode 6.0.1) podaje przełączane wartości szerokości i wysokości w
[[UIScreen mainScreen] bounds].size
zależności od orientacji urządzenia.Może to stanowić problem przy określaniu właściwego fizycznego rozmiaru ekranu. Ten kod pomaga również rozróżnić wszystkie 2014. Generacje modeli iPhone'a:
Można go również łatwo zmienić, aby odróżnić np. IPhone6 od iPhone6 +.
źródło
Sugerowałbym użycie maski automatycznej zmiany rozmiaru w swoich aplikacjach zgodnie z interfejsem użytkownika, pozwala to zaoszczędzić wiele problemów i jest lepsze niż tworzenie innego interfejsu użytkownika dla ekranów iPhone 4 i 5.
źródło