Co to jest „Różne dla cech” w Xcode 8?

86

Używam klas AutoLayout i Size, ale wraz z wydaniem iOS 10 i nowego Xcode 8.0 pojawiła się jedna nowa opcja Vary for Traits. Czy to zamiennik Size Classe dla różnych szerokości i wysokości urządzeń.

wprowadź opis obrazu tutaj

Po zaznaczeniu widthpola wyboru wyświetla się varying 14 compact width devices.

wprowadź opis obrazu tutaj

Po zaznaczeniu heightpola wyboru wyświetla się varying 18 compact height devices.

wprowadź opis obrazu tutaj

Po zaznaczeniu obu pól wyboru wyświetla się varying 11 compact width regular height devices.

wprowadź opis obrazu tutaj

Jak skorzystać z tej opcji? Czy możemy używać AutoLayout z klasami rozmiaru, takimi jak Xcode7.0? Jeśli ktoś ma dogłębną wiedzę, proszę o wyjaśnienie.

technerd
źródło
Zapraszamy do obejrzenia filmów z sesji WWDC 2016. Jestem pewien, że zostało to gdzieś opisane jako „nowe funkcje Xcode”.
Martin R

Odpowiedzi:

133

To tylko rozszerzenie tego, jak szybko używać „różnych cech” w projekcie w celu dodawania różnych układów dla iPada i iPhone'a.

Przeczytaj to, aby dowiedzieć się więcej na temat klas wielkości.

https://developer.apple.com/reference/uikit/uitraitcollection

wprowadź opis obrazu tutaj

Jeśli pomijasz poniższy przykład, przeczytaj podsumowanie na końcu.


  • CEL :

Potrzebujesz przycisku o różnych szerokościach na iPhonie i iPadzie. Pierwsza ma szerokość 80, a druga 300.

  • METODA 1:

Różne dla cech z wieloma ograniczeniami, jak zainstalowane.

  • KROKI :

    1. Najpierw dodaj typowe ograniczenia, takie jak Wyśrodkuj przycisk w poziomie i w pionie.

wprowadź opis obrazu tutaj

  1. Wybierz VaryForTraits, a dla ekranów iPhone'a zgodnie z wytycznymi dotyczącymi klasy rozmiaru klasa rozmiaru C * R pasuje do modelu i sprawdzamy znaczniki szerokości i wysokości w PopUp. Zamknij wyskakujące okienko, klikając w dowolnym miejscu na ekranie.

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

  1. Dodaj stałą szerokości i sprawdź, czy ograniczenie zostało dodane dla klasy rozmiaru C * R. Po dodaniu ograniczeń wybierz przycisk Gotowe Zmienne.

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

  1. W przypadku ekranów iPada ponownie wybierz dowolne urządzenie iPad i wybierz opcję VaryForTraits, a tym razem po kliknięciu wysokość-szerokość powinno pokazać zmianę R * R.

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

  1. Ponownie dodaj ograniczenie szerokości, ostatnie dodane ograniczenie szerokości iPhone'a musi być niezaznaczone, jak na zrzucie ekranu. Tym razem wartość dodana będzie dotyczyła klasy rozmiaru R * R.

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

  1. Przełącz się z powrotem na układ iPhone'a i zajmuje 80 jako szerokość, a iPad zajmie 300.

wprowadź opis obrazu tutaj

WNIOSEK:

Zwróć uwagę, że w sumie dodano dwa ograniczenia, aw obu z nich wartości różnią się w zależności od wybranej klasy rozmiaru.


  • METODA 2:

Różni się dla cech z jednym ograniczeniem, zainstalowano wiele klas rozmiaru

  • KROKI :
    1. Dodaj ograniczenie normalnej szerokości. Następnie zaznacz to ograniczenie i wybierz przycisk + obok wartości Stała.

wprowadź opis obrazu tutaj

  1. Dodaj odmianę cechy, a dla iPhone'a wybieramy C * R i ustawiamy stałą wartość na 100.

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

  1. Ponownie w przypadku iPada, który podąża za odmianą cechy jako R * R, dodajemy kolejną odmianę, klikając ponownie przycisk + i ustawiając wartość na 300.

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

  1. Wybierz iPada, a szerokość zostanie automatycznie przyjęta jako 300, a w przypadku iPhone'a przyjmie wartość 100.

wprowadź opis obrazu tutaj

WNIOSEK:

Wydaje się, że jest to lepsza opcja niż dodawanie dwóch ograniczeń, gdy wymagane jest tylko jedno ograniczenie, a wartość stała się różni.

KIEDY STOSOWAĆ, CZEGO STOSOWAĆ:

Oba podejścia zasadniczo robią to samo, ustawiając wartości na klasy rozmiaru.

Ale # Method1 jest używana, gdy chcesz dodać ograniczenie specjalnie dla urządzenia lub powiedzieć, że klasa rozmiaru. Na przykład w iPhonie przycisk powinien znajdować się od Top 50 pkt, aw iPadzie powinien być wyśrodkowany w poziomie i w pionie. W takich sytuacjach musisz użyć VaryForTraits, ponieważ otwiera drzwi, aby dodać wiązania dla określonej klasy rozmiaru.

# Metoda2 jest używana, gdy chcesz mieć różne wartości stałe dla tego samego typu ograniczenia.

PS: DO WSZYSTKICH, KTÓRZY NIE MOGĄ POZNAĆ PRZYKŁADOWEJ DZIAŁANIA

Upewnij się, że dodajesz tylko wymagane ograniczenia jako zainstalowane. Pole wyboru obok Zainstalowano powinno pojawiać się tylko w przypadku ograniczenia, którego potrzebujesz dla klasy rozmiaru. To jest klucz!

wprowadź opis obrazu tutaj

Po prostu dodaj górne ograniczenie i początek do uiButton w widoku. Wybierz górne ograniczenie i usuń zaznaczenie podstawowej opcji Zainstalowano ze znakiem plus. Teraz, klikając znak plus, dodaj odmianę do C R i zaznacz tę opcję. Teraz zmień urządzenie z iPhone'a na iPada z różnymi kombinacjami orientacji. To ograniczenie będzie stosowane tylko do klasy rozmiaru C R, czyli iPhone'a w orientacji pionowej. Jeśli zaznaczono pole wyboru obok podstawowego zainstalowanego (tego z symbolem plusa), oznacza to, że ograniczenie powinno zostać zastosowane do wszystkich klas wielkości.

PODSUMOWANIE :

Odmiana cechy to zmiana w prezentacji interfejsu użytkownika oparta na konfiguracji urządzenia. Cechy charakterystyczne interfejsu użytkownika nie ograniczają się tylko do ograniczeń, ale można je zastosować do znacznie większej liczby. Na przykład zmiana koloru tła i innych elementów, gdy urządzenie jest ustawione na ciemny styl. Odmiana może dotyczyć elementu interfejsu użytkownika, na przykład usunięcia ograniczenia, lub właściwości klasy widoku lub ograniczenia, na przykład czcionki etykiety. Możesz zmieniać:

  • Rozmiar lub położenie widoku

  • Instalacja widoku

  • Instalacja wiązania

  • Stała ograniczenia

  • Czcionka

  • Kolor czcionki, odcienia lub tła

  • Marginesy układu

  • Plik graficzny

Konkretny zestaw właściwości, które można zmieniać, zależy od klasy elementu. W tym przykładzie zademonstrowaliśmy użycie - Instalacja ograniczenia & - Stała ograniczenia. Inne są dość proste i można je łatwo wywnioskować.

Jen Jose
źródło
51
To nie działa dla mnie .. Aktualizuje ograniczenia na wszystkich rozmiarach ekranu i praktycznie nic się nie dzieje ...
Dan
5
Jeśli to nie zadziała, spróbuj przeczytać to: help.apple.com/xcode/mac/8.0/#/devba3dd0b51 . Jeśli chcesz dostosować czcionkę lub inną właściwość, kliknij znak „+” znajdujący się po lewej stronie właściwości w panelu atrybutów. I nie można zmieniać cech dla iPhone'a 4s i iPhone'a 7 Plus, na przykład w zależności od szerokości, ponieważ oba mają niewielką szerokość. Możesz je zmieniać dla iPhone'a i iPada.
Denis Kutlubaev
2
Pracował dla mnie thnx :)
Sanman
1
To zadziałało po usunięciu starego ograniczenia i dodaniu nowego, zamiast zastępować jego wartość.
Teodor Ciuraru
2
Dla ludzi, którzy mówią, że to nie działa. Myślę, że próbujesz zmienić całe ograniczenie, możesz tylko stałą wartość w ograniczeniu, w rzeczywistości nie możesz zmienić wielu lub innych właściwości ograniczenia. Ja też byłem zdezorientowany w tej części.
3366784
21

Zmienna dla cech jest ewolucja opcji klas wielkości, która była obecna w poprzedniej wersji Xcode. Pozwala na znacznie bardziej sprytną i precyzyjną wariację na podstawie cech. Oczywiście nie ogranicza się to tylko do odmian iPada / iPhone'a, ale można również określić odmiany w zależności od orientacji i innego urządzenia.

Inne odpowiedzi w tym wątku mają pewne braki i nieścisłości, być może najbardziej efektywnym sposobem udzielenia odpowiedzi jest zrobienie przykładu. Dla jasności ograniczymy nasz przykład tylko do przycisku i dwóch układów. Jednak, jak wyjaśniono poniżej, możesz dowolnie rozszerzać poniższy przykład. Naszym celem jest dostosowanie pozycji przycisku między dwoma różnymi układami: poziomym i pionowym na wszystkich urządzeniach.

Uwaga: jeśli nie jest włączona opcja „Różne dla cech”, wszystkie dostosowania układu i interfejsu użytkownika odnoszą się do wszystkich cech (tj. Do wszystkich klas wielkości).

rys1

Zacznijmy od umieszczenia przycisku na naszej planszy. Ponieważ opcja „różne dla cech” nie jest włączona, przycisk będzie obecny we wszystkich różnych układach. Gdybyśmy zamiast tego włączyli zmienne dla cech, przycisk odnosiłby się tylko do wybranej cechy.

rys2

Teraz włączmy opcję „zmieniaj dla cechy” i wybierzmy wariant oparty na wzroście. Powinieneś zobaczyć, że dolny ekran zmieni kolor na niebieski i zgodnie z wyborem zobaczysz wszystkie urządzenia, na które ma to wpływ. Na razie w porządku.

rys3

Wybierz ponownie przycisk i dodaj zwykłą reklamę z ograniczeniami. W naszym przykładzie dodamy górną i lewą spację wiodącą, a także szerokość i wysokość. Następnie kliknij „Done Varying”. Zobaczysz, że dolna część ekranu ponownie zmieni kolor na szary. To, co się dzieje, to fakt, że powiedzieliśmy Interface Builder, aby dodał powyższe ograniczenia tylko dla klas (w: C h: R).

rys4

Teraz wybierz tryb poziomy na dole ekranu. Zobaczysz, że Button jest czerwony, ponieważ nie ma ograniczeń, które dodałeś tylko dla niektórych cech. Wybierz ponownie zmianę dla cech i wybierz ponownie zmianę wysokości. Dodaj następujące ograniczenia:

rys5

i naciśnij gotowe, zmieniając. Teraz przycisk jest dobrze widoczny na ekranie zarówno w orientacji poziomej, jak i pionowej.

rys6

Buduj i uruchamiaj. Zobaczysz, że przycisk zmieni się w zależności od orientacji ekranu.

Możesz tworzyć bardziej zaawansowane układy według tego wzorca. Na przykład możesz wybrać na początku zmienną dla cech i upuścić obiekty UIKit tylko dla określonej cechy. Ten obiekt będzie obecny tylko w podanym wariancie, a na pozostałych będzie wyszarzony, co pozwoli na tworzenie zupełnie innych interfejsów użytkownika w oparciu o cechy.

valvoline
źródło
3
Dodałem ograniczenia dla klasy (wC, hR), a następnie kliknąłem, aby zmienić. Kiedy otwieram (wR, hR), widzę również stare ograniczenia. Jak utworzyć nowe ograniczenia dla (wR, hR) tej klasy. Proszę, powiedz mi @valvolin
Ramcharan Reddy
9

To nic innego size classesjak jaźń, ale z inną reprezentacją. dopóki xcode 7nie użyliśmy klas wielkości i nie rozważymy height-widthw regular,compact and anysposób, w vary for traitskoncepcji jest to samo, ale xcode szczegółowo wyjaśnia exact device. W starszej wersji wiemy, że for every iphone in portraintitp. Informacje gdzie w tym możemy poznać dokładne urządzenie!

Sprawdź poniższe zrzuty ekranu,

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

Aby uzyskać więcej informacji, zapoznaj się z wwdc2016 - wideo !

Źródła: This So Post

Ketan Parmar
źródło
Ok, sprawdzę wideo WWDC.
technerd
Masz rację, to nic innego jak ewolucja klas wielkości
Durai Amuthan.H