UITraitCollection

panther222128·2021년 8월 13일
0

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

"The iOS interface environment for your app, including traits such as horizontal and vertical size class, display scale, and user interface idiom."

수평 및 수직 사이즈 클래스, 디스플레이 스케일, UI idiom과 같은 특성을 포함하고 있는, 앱을 위한 iOS 인터페이스 환경입니다.

Declaration

class UITraitCollection : NSObject

Overview

iOS 특성 환경은 UITraitEnvironment 프로토콜의 traitCollection 속성을 통해 노출됩니다. 이 프로토콜은 UIScreen, UIWindow, UIViewController, UIPresentationController, UIView 클래스들에 의해 채택됩니다. 적응형 인터페이스를 구현하려면, 이러한 특성 변경사항에 따라 앱의 레이아웃을 조정하는 코드를 작성하시기 바랍니다. UITraitCollectionhorizontalSizeClass, verticalSizeClass, displayScale, userInterfaceIdiom 속성을 사용해서 특정 특성 값에 접근할 수 있습니다. idiom과 크기 특성을 표현하는 값은 UIUserInterfaceIdiomUIUserInterfaceSizeClass 열거형애 정의되어 있습니다. 디스플레이 스케일 특성에 대한 값은 floating 포인트 숫자로 표현됩니다.

뷰 컨트롤러 및 뷰가 iOS 인터페이스 환경에서 변경사항에 대해 반응적인 형태로 만드려면, 특성 환경 프로토콜로부터 traitCollectionDidChange(_:) 메소드를 오버라이드 해야 합니다. 인터페이스 환경 변화에 대해 응답하는 뷰 컨트롤러 애니메이션을 커스터마이징 하려면, UIContentContainerwillTransition(to:with:) 메소드를 오버라이드 해야 합니다.

Figure 1은 다양한 기기의 전체 스크린에서 실행될 때, 앱에서 발생할 수 있는 수평(넓이) 및 수직(높이) 사이즈 클래스를 보여주고 있습니다.

Figure 1 Size classes

아이패드의 슬라이드 오버 및 스플릿 뷰에서 앱이 가질 수 있는 사이즈 클래스에 대한 정보는 Adopting Multitasking Enhancements on iPad에 있는 Slide Over and Split View Quick Start를 살펴보시기 바랍니다.

Slide Over and Split View Quick Start
https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForSlideOverAndSplitView.html#//apple_ref/doc/uid/TP40015145-CH13

특정 환경에 일치하는 보조적인 독립 특성 컬렉션을 생성할 수 있습니다. UITraitCollection 클래스는 네 가지 특수 생성자를 포함하고 있으며, 특성 컬렉션의 배열을 결합시키도록 해주는 init(traitsFrom:)도 포함하고 있습니다.

독립 특성 컬렉션 사용의 한 가지 중요한 사항은 현재 iOS 인터페이스 환경에 기반해 이미지의 조건적 사용을 활성화하는 것입니다. UIImageAsset 인스턴스의 방법을 통해서 특성 컬렉션과 UIImage 인스턴스를 연결시킬 수 있습니다. UIImageAsset의 오버뷰에서 설명하고 있습니다. 에셋 카탈로그를 Xcode IDE의 내부로부터 시각적으로 설정하는 것에 대한 더 많은 정보는 Asset Catalog Help를 살펴보시기 발바니다.

UIImageAsset
https://developer.apple.com/documentation/uikit/uiimageasset
https://velog.io/@panther222128/UIImageAsset

아이폰에서 landscape orientation일 때 두 열을 갖는 스플릿 뷰를 활성화시키기 위해 독립 특성 컬렉션을 사용할 수 있습니다. UIViewControllersetOverrideTraitCollection(_:forChild:) 메소드를 살펴보시기 바랍니다.

UIViewController
https://developer.apple.com/documentation/uikit/uiviewcontroller
https://velog.io/@panther222128/ViewController

독립 특성 컬렉션은 UIAppearance에서 설명하고 있는 것처럼 뷰 모양을 커스터마이징 하는 것에도 유용하며, appearance(for:) 프로토콜 메소드의 방법으로 구현합니다.

UIAppearance
https://developer.apple.com/documentation/uikit/uiappearance
https://velog.io/@panther222128/UIAppearance

3D Touch and Trait Collections

iOS 9을 시작으로 앱이 실행되고 있는 기기에서 3D 터치를 지원하고 있는지 확인하기 위해 이 클래스를 사용할 수 있습니다. 특성 환경을 갖는 앱에서 모든 객체에 있어 특성 컬렉션에 있는 forceTouchCapability 속성의 값을 읽어보시기 바랍니다. 특성 환경에 대한 더 많은 정보는 UITraitEnvironment를 살펴보시기 바랍니다. 압력 터치 기능 속성의 가능한 값에 대해서는 UIForceTouchCapability 열거형을 살펴보시기 바랍니다.

UITraitEnvironment
https://developer.apple.com/documentation/uikit/uitraitenvironment
https://velog.io/@panther222128/UITraitEnvironment

UIForceTouchCapability
https://developer.apple.com/documentation/uikit/uiforcetouchcapability
https://velog.io/@panther222128/UIForceTouchCapability

사용자가 설정에서 3D 터치를 끌 수 있기 때문에 traitCollectionDidChange(_:) 메소드의 구현에서 forceTouchCapability 속성의 값을 확인해야 하며, 속성의 값에 따라 코드 경로를 조정해야 합니다.

See Also


Adaptivity

Responding to Changing Display Modes on Apple TV

기기에 대한 스크린 영역이 변경될 때 이미지 및 리소스를 동적으로 변경시킵니다.

https://developer.apple.com/documentation/uikit/app_and_environment/responding_to_changing_display_modes_on_apple_tv
https://velog.io/@panther222128/Responding-to-Changing-Display-Modes-on-Apple-TV


0개의 댓글