Xcode 8에서 'Vary for Traits'는 무엇입니까?


86

AutoLayout 및 Size 클래스를 사용하고 있지만 iOS 10 및 새로운 Xcode 8.0 릴리스에는 하나의 새로운 옵션이 Vary for Traits있습니다. 다양한 너비와 높이의 장치에 대한 Size Classe의 대체입니다.

여기에 이미지 설명 입력

width체크 박스 를 선택하면이 표시됩니다 varying 14 compact width devices.

여기에 이미지 설명 입력

height체크 박스 를 선택하면이 표시됩니다 varying 18 compact height devices.

여기에 이미지 설명 입력

두 확인란을 모두 선택하면이 표시됩니다 varying 11 compact width regular height devices.

여기에 이미지 설명 입력

이 옵션을 사용하는 방법은 무엇입니까? Xcode7.0과 같은 크기 클래스와 함께 AutoLayout을 사용할 수 있습니까? 깊이있는 지식이있는 사람이 있으면 설명해주십시오.


WWDC 2016 세션 비디오를 살펴보십시오. 나는 그것이 "Xcode의 새로운 기능"으로 어딘가에서 다루어 졌다고 확신합니다.
Martin R

답변:


134

이것은 iPad 및 iPhone에 대해 서로 다른 레이아웃을 추가하기 위해 프로젝트에서 "Vary Traits"를 빠르게 사용하는 방법에 대한 확장 일뿐입니다.

크기 등급에 대한 자세한 내용을 보려면 이것을 읽으십시오.

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

여기에 이미지 설명 입력

아래의 예를 건너 뛰려면 마지막에 요약을 읽으십시오.


  • 객관적인 :

iPhone과 iPad에서 너비가 다른 버튼이 필요합니다. 전자는 폭이 80이고 후자는 폭이 300입니다.

  • 방법 1 :

설치된 여러 제약 조건이있는 특성에 따라 다릅니다.

  • 단계 :

    1. 먼저 버튼을 가로 및 세로 중앙에 배치하는 것과 같은 일반적인 제약 조건을 추가합니다.

여기에 이미지 설명 입력

  1. 크기 클래스 지침에 따라 VaryForTraits를 선택하고 iPhone 화면의 경우 C * R 크기 클래스가 모델에 적합하며 팝업에서 너비 및 높이의 눈금 표시를 확인합니다. 화면의 아무 곳이나 클릭하여 팝업을 닫습니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

  1. 너비 상수를 추가하고 C * R 크기 클래스에 대한 제약 조건이 추가되었는지 확인합니다. 제약을 추가 한 후 Done Varying 버튼을 선택합니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

  1. iPad 화면의 경우 다시 iPad 장치를 선택하고 VaryForTraits를 선택하고 이번에는 높이 너비를 클릭하면 R * R 변형이 표시됩니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

  1. 다시 너비 제한을 추가합니다. 마지막으로 추가 된 iPhone 너비 제한은 스크린 샷과 같이 강조 표시되지 않아야합니다. 이번에 추가 된 값은 크기 등급 R * R에 해당합니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

  1. iPhone 레이아웃으로 다시 전환하면 너비가 80이고 iPad가 300을 차지합니다.

여기에 이미지 설명 입력

결론 :

총 2 개의 제약 조건이 추가되었으며 두 제약 조건 모두에서 선택한 크기 클래스에 따라 값이 다릅니다.


  • 방법 2 :

단일 제약 조건, 다중 크기 클래스가 설치된 특성에 따라 다름

  • 단계 :
    1. 일반 너비 제약을 추가합니다. 그런 다음 해당 제약 조건을 선택하고 상수 값 옆에있는 + 버튼을 선택합니다.

여기에 이미지 설명 입력

  1. 특성 변형을 추가하고 iPhone의 경우 C * R을 선택하고 상수 값을 100으로 설정합니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

  1. R * R로 특성 변형을 따르는 iPad의 경우 다시 + 버튼을 클릭하여 다른 변형을 추가하고 값을 300으로 설정합니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

  1. iPad를 선택하면 너비는 자동으로 300으로 설정되고 iPhone으로 다시 돌아 오면 100을 값으로 사용합니다.

여기에 이미지 설명 입력

결론 :

단일 제약이 필요하고 상수 값이 다른 경우 두 제약을 추가하는 것보다 더 나은 옵션 인 것 같습니다.

사용시기, 사용 방법 :

두 접근 방식 모두 기본적으로 동일한 작업을 수행하여 값을 Size-classes로 설정합니다.

그러나 # Method1 은 특별히 장치에 대한 제약 조건을 추가하거나 크기 클래스라고 할 때 사용됩니다. 예를 들어, iPhone에서는 버튼이 Top 50pts에 있어야하고 iPad에서는 가로 및 세로 중앙에 있어야합니다. 이러한 상황에서는 특정 크기 클래스에 대한 제약 조건을 추가하기 위해 문을 열 때 VaryForTraits를 사용해야합니다.

# Method2 는 동일한 제약 유형에 대해 다른 상수 값을 원할 때 사용됩니다.

추신 : 예제 작업을 할 수없는 모든 사람들에게

필수 제약 조건 만 설치됨으로 추가하고 있는지 확인하십시오. 설치됨 확인란은 크기 클래스에 필요한 제약 조건에 대해서만 표시되어야합니다. 그것이 핵심입니다!

여기에 이미지 설명 입력

보기의 uiButton에 상단 제약 조건 및 선행을 추가하기 만하면됩니다. 상단 제약 조건을 선택하고 더하기 기호로 기본 설치 옵션을 선택 취소하십시오. 이제 더하기 기호를 클릭하여 C R 에 변형을 추가 하고 해당 옵션을 확인하십시오. 이제 다양한 방향 조합으로 장치를 iPhone에서 iPad로 변경하십시오. 이 제약은 세로 방향의 iPhone 인 C R 크기 클래스 에만 적용됩니다 . 기본 설치됨 (플러스 기호가있는 확인란)에 대한 확인란이 선택되어 있으면 제약 조건이 모든 크기 클래스에 적용되어야 함을 의미합니다.

요약 :

Trait Variation은 장치 구성을 기반으로하는 사용자 인터페이스의 표현에 대한 변경 사항입니다. 사용자 인터페이스의 특성 변형은 제약에만 국한되지 않고 훨씬 더 많이 적용될 수 있습니다. 장치가 어두운 스타일로 설정된 경우 배경 및 기타 요소의 색상을 변경하는 등. 제약 조건 제거와 같은 사용자 인터페이스의 요소 또는 레이블의 글꼴과 같은 뷰 클래스 또는 제약 조건의 속성에 변형이 적용될 수 있습니다. 다양 할 수 있습니다.

  • 보기의 크기 또는 위치

  • 보기 설치

  • 제약 설치

  • 제약 상수

  • 폰트

  • 글꼴, 색조 또는 배경 색상

  • 레이아웃 여백

  • 이미지 파일

변경할 수있는 특정 속성 집합은 요소의 클래스에 따라 다릅니다. 이 예에서는-Installation of a constraint &-Constraint constant의 사용을 시연했습니다. 다른 것들은 매우 간단하고 쉽게 추론 할 수 있습니다.


51
이것은 나를 위해 작동하지 않습니다. 모든 화면 크기에 대한 제약 조건을 업데이트하고 실제로 아무 일도 일어나지 않습니다 ...
Dan

5
작동하지 않으면 help.apple.com/xcode/mac/8.0/#/devba3dd0b51 을 읽으십시오 . 글꼴 또는 기타 속성을 사용자 지정하려면 속성 창에서 속성 왼쪽에있는 "+"를 클릭합니다. 예를 들어 iPhone 4s 및 iPhone 7 Plus의 특성은 모두 컴팩트 한 너비이기 때문에 너비에 따라 다를 수 없습니다. iPhone 및 iPad에 대해 변경할 수 있습니다.
Denis Kutlubaev

2
나를 위해 일했다 thnx :)
Sanman

1
이전 제약 조건을 삭제하고 값을 대체하는 대신 새 제약 조건을 추가 한 후 작동했습니다.
Teodor Ciuraru

2
이것이 작동하지 않는다고 말하는 사람들을 위해. 모든 제약 조건을 변경하려고 시도하고 있다고 생각합니다. 제약 조건의 상수 값만 실제로 제약 조건의 여러 속성 또는 다른 속성을 변경할 수 없습니다. 나는 또한이 부분에 대해 혼란 스러웠다.
3366784

21

Vary for traits는 이전 버전의 Xcode에 있던 크기 클래스 옵션의 진화입니다. 특성에 따라 훨씬 더 멋지고 정확한 변형이 가능합니다. 물론 iPad / iPhone 전용 변형에 국한되지 않고 방향 및 다른 장치에 따라 변형을 지정할 수도 있습니다.

이 스레드의 다른 답변에는 약간의 부족과 부정확성이 있습니다. 아마도 답변을 제공하는 가장 효율적인 방법은 예제를 만드는 것입니다. 명확성을 위해 예제를 버튼 하나와 레이아웃 두 개로 제한합니다. 그러나 아래에 설명 된대로 원하는대로 다음 예제를 확장 할 수 있습니다. 우리의 목표는 모든 기기에서 가로와 세로의 두 가지 레이아웃 사이에서 버튼의 위치를 ​​조정하는 것입니다.

참고 : "특성에 따라 다름"옵션을 활성화하지 않으면 모든 레이아웃 및 UI 인터페이스 조정이 모든 특성 (즉, 모든 크기 클래스)을 참조합니다.

무화과 1

스토리 보드에 버튼을 넣어 시작하겠습니다. "특성에 따라 다름"이 활성화되지 않았기 때문에 버튼은 모든 다른 레이아웃에 표시됩니다. 대신 특성에 대해 변경을 활성화 한 경우 버튼은 선택된 특정 특성에만 참조됩니다.

무화과 2

이제 "특성에 따라 다름"을 활성화하고 높이에 따라 변형을 선택해 보겠습니다. 하단 화면이 파란색으로 바뀌고 선택에 따라 영향을받는 모든 장치가 표시됩니다. 여태까지는 그런대로 잘됐다.

무화과 3

버튼을 다시 선택하고 일반적인 제약 조건 광고를 추가합니다. 이 예에서는 너비와 높이뿐만 아니라 위쪽 및 왼쪽 선행 공백을 추가합니다. 그 후 "Done Varying"을 클릭합니다. 화면 하단이 다시 회색으로 변하는 것을 볼 수 있습니다. 무슨 일이 일어나고 있는지 우리는 Interface Builder에 (w : C h : R) 클래스에 대해서만 위의 제약 조건을 추가하도록 지시했습니다.

무화과 4

이제 화면 하단에서 가로 모드를 선택하십시오. Button은 일부 특성에 대해서만 추가 한 제약이 없기 때문에 빨간색으로 표시됩니다. 특성에 대해 다시 변경을 선택하고 높이 변경을 다시 선택하십시오. 다음 제약 조건을 추가합니다.

무화과 5

다양하게 완료를 누릅니다. 이제 버튼이 가로 및 세로 모두 화면에서 잘 식별됩니다.

무화과 6

빌드하고 실행하십시오. 화면의 방향에 따라 버튼이 변경되는 것을 볼 수 있습니다.

이 패턴에 따라 고급 레이아웃을 만들 수 있습니다. 예를 들어, 처음에는 특성에 대해 vary를 선택하고 특정 특성에 대해서만 UIKit 개체를 삭제할 수 있습니다. 이 개체는 지정된 변형에만 존재하며 다른 변형에서는 회색으로 표시되어 특성에 따라 완전히 다른 사용자 인터페이스를 만들 수 있습니다.


3
(wC, hR) 클래스에 대한 제약 조건을 추가 한 다음 다양한 완료를 클릭했습니다. (wR, hR)을 열면 이전 제약 조건도 보입니다. (wR, hR)이 클래스에 대한 새 제약 조건을 만드는 방법. @valvolin에 대해 말해주세요
Reddy

9

그것은 size classes자기 자신 일 뿐이며 다른 표현입니다. xcode 7크기 클래스를 사용 height-width하고 regular,compact and any방식으로 고려할 때까지 vary for traits개념은 동일하지만 xcode는 구체적으로 설명 exact device합니다. 이전 버전에서는 for every iphone in portraint정확한 장치를 알 수있는 정보 등 을 알고 있습니다!

아래 스크린 샷을 확인하십시오.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

자세한 내용 은 wwdc2016-비디오 를 참조하십시오!

참고 : 이 게시물


좋습니다. WWDC 비디오를 확인해 보겠습니다.
technerd 2010 년

크기 등급의 진화
일뿐입니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.