2014-10-20 26 views
5

Chciałbym zadać pytanie o bardzo zagmatwany (przynajmniej do mnie) temat - Klasy wielkości w Xcode 6. Próbowałem uzyskać pełne zrozumienie, jak to wszystko działa, ale jest to wciąż nie jest dla mnie jasne.Xcode 6 Rozmiar Klasy

Przed Xcode 6 i nowymi iPhone'ami wszystko było bardzo proste. Do, Non-Retina i Retina, wyświetlacze, które umożliwiły nam pracę z zawsze taką samą rozdzielczością 320x480 (lub 568 dla wyższych urządzeń). Zasoby standardowe i @ 2x miały sens. Teraz jednak mamy duże ekrany osłów o tym samym współczynniku (prawie takie same), ale obszar roboczy nie jest już taki sam.

Klasy wielkości mają za zadanie sprawić, by wszystko pasowało do tego w jednym scenorysie. Ale poczekaj ... iPhone 6 używa zasobów @ 2x, co w moim odczuciu oznacza, że ​​grafika będzie wyglądać na mniejszą niż na iPhonie 5/5S. A iPhone 6 Plus używa zasobów @ 3x, które znowu nie będą wyglądały tak samo. Wygląda na to, że nie jest możliwe, aby na przykład pewien przycisk zawsze był tego samego rozmiaru w stosunku do, powiedzmy, pełnej szerokości ekranu. Chyba że oczywiście to zakodujemy, ale to spowoduje, że klasy wielkości będą bezużyteczne.

Czy rozumiem poprawnie, czy też czegoś brakuje? Byłoby wspaniale usłyszeć, jak wszyscy to widzicie. Może znasz dobre samouczki? Nie znalazłem niczego, co mogłoby wyjaśnić moje wątpliwości.

Z góry dziękuję!

+0

Masz to. To właśnie musiałem zrobić. Ręcznie spraw, aby przyciski były większe/mniejsze za pomocą kodu w zależności od tego, który to telefon iPhone. Jak zauważyłeś, przycisk wyglądający idealnie w symulatorze iPhone'a 5/6 wygląda puszysto w iPhone 6 plus. Stąd dylemat –

+0

Dzięki za komentarz, Sam. Wygląda na to, że iPhone 6 będzie bardzo kłopotliwy i nie ma inteligentnego sposobu na tworzenie układów w Konstruktorze interfejsów, chyba że dokładne rozmiary i odstępy nie są bardzo ważne. Przypomina mi Androida :) –

Odpowiedz

4

Można zrobić wiele z tego, co mówisz o użyciu kombinacji różnych podejść:

  1. klasy wielkości dla różnych typów urządzeń, aby objąć większość dużych zmian w konfiguracji interfejsu użytkownika (na przykład , różnice między iPadem a iPhonem). Możesz użyć tego, aby zmienić, czy pasek boczny pojawia się, czy nie, na przykład.

  2. Reguły autolayout specyficzne dla poszczególnych klas wielkości. Możesz dodać różne reguły autolayout dla różnych klas wielkości, aby dostosować układ (na przykład możesz przełączać się między poziomym rzędem przycisków a kolumną stosów w ten sposób, ponieważ możesz teraz mieć różne reguły Autolayout dla różnych klas wielkości). Ta technika jest niezwykle skuteczna, gdy zdasz sobie sprawę, że nie musisz już używać tych samych reguł autolayout dla wszystkich klas wielkości.

  3. Katalogi zasobów automatycznie przestawiające wstępnie renderowaną grafikę dla różnych obsługiwanych rozdzielczości itd. Należy również pamiętać, że ponieważ wiele starszych urządzeń nie obsługuje systemu iOS 8, nie trzeba już dodawać wersji o bardzo niskiej rozdzielczości, chyba że wymagana jest duża kompatybilność wsteczna (a jeśli tak, to nie wszystkie funkcje klasy wielkości są dostępne tak czy inaczej). Właśnie stworzyłem nową wersję aplikacji obsługującej system iOS 8, ponieważ użytkownicy w starszych wersjach otrzymają tylko poprzednią wersję aplikacji.

  4. Obrazy z możliwością zmiany rozmiaru: można teraz określać zmienne obszary w obrazach, aby kontrolować ich rozciąganie po zastosowaniu do takich elementów, jak UIButtons itp., Które mogą zmieniać rozmiar zgodnie z regułami Autolayout. (Jest to funkcja, którą Android miał już od jakiegoś czasu, więc jest mile widziany na iOS.) Oznacza to, że możesz sprawić, by wszystko wyglądało dobrze na większej liczbie rozmiarów ekranu bez konieczności posiadania tak wielu oddzielnych obrazów lub tak precyzyjnej kontroli nad rozmiarem elementów interfejsu użytkownika.

  5. Kod programowy w kontrolerach widoku do modyfikowania wszystkiego, czego nie można osiągnąć w żaden inny sposób.

Chociaż prawdą jest, że nie trzeba aż tak grzywną szczegółową kontrolę nad urządzeniami, które pokazują, co dokładnie układ z klas wielkości, stwierdziliśmy, że to nie było tak duży problem, jak myślisz, jak klasy wielkości pozwalają na bardzo płynne dostosowywanie kontrolerów widoku do różnych urządzeń. Kombinacja klas autolayout i wielkości jest szczególnie silna. Jest to potencjalnie dobra rzecz, ponieważ oznacza mniejszą ręczną konfigurację, gdy Apple wychodzi z innym rozmiarem ekranu. Teraz jest trochę bólu, aby się nawrócić, ale prawdopodobnie warto na dłuższą metę. Musisz tylko pomyśleć o tym, jak ustawić trochę inaczej. Jest trochę bardziej podobny do Androida, gdzie od dawna muszą radzić sobie z wieloma różnymi rozmiarami i rozdzielczościami ekranów urządzeń, ale jest to także naturalna ewolucja platformy, na której nie można dokładnie zaprojektować każdego urządzenia fizycznego. w praktyce (powinieneś jednak nadal testować je na symulatorze).

+0

hej, bardzo dobre punkty! dziękuję bardzo za wylistowanie tego wszystkiego! –

0

Klasy wielkości nie są po to, aby dostosować się do większego rozmiaru ekranu, są tam dla zupełnie innych układów. Podobnie jak na iPhonie, możesz pokazać jeden element i dotknąć, aby przejść do następnego ekranu, aby uzyskać więcej informacji, ale na iPadzie pokazujesz oba na tym samym ekranie.

W przypadku niewielkich korekt używasz automatycznego układu, z różnymi układami na klasę wielkości, a różne rozmiary ekranu w każdej klasie wielkości są obsługiwane przez układ automatyczny.