-
Swift - UITraitCollection에 대해서 알아보자개발 (dev)/iOS 2024. 1. 21. 12:18
프로젝트를 진행하면서 UITraitCollection의 userInterfaceStyle을 사용하여 다크 모드와 라이트 모드를 다루는 코드를 작성하게 되었는데, UITraitCollection에 대해서 더 공부하고 싶어져서 글을 작성하게 되었다.
UITraitCollection 의 단어뜻을 해석해보면 UI에 대한 특성들 모음집 이라고 해석해 볼 수 있다.
애플의 공식문서를 읽어보니 단어뜻이랑 거의 일치하는 것 같다.
https://developer.apple.com/documentation/uikit/uitraitcollection
공식문서를 읽어보면 UITraitCollection은 레이아웃의 방향, 유저의 디스플레이 크기, 사이즈 클래스 등의 유저 인터페이스의 다양한 상태를 다루는 UITraitEnvironment 프로토콜을 채택하고 있다.
그 외에도 자주 쓰이는 UIView, UIViewController등 많은 클래스도 UITraitEnvironment 프로토콜을 채택하는것을 확인할 수 있었다.
그리고 풀스크린으로 다양한 기기에서 앱을 실행할때, 두개의 클래스를 정의하여 사용하는데, 이때의 클래스는 Swift에서의 class가 아니라 계층이라는 말을 표현한 것 같다. horizontalSizeClass와 verticalSizeClass를 사용하는데 각각 Regular와 Compact값을 사용한다.
horizontalSizeClass
compact: 디바이스의 너비가 작은 경우, 주로 iPhone에서 세로 방향 레이아웃에 해당
Regular: 디바이스의 너비가 큰 경우. 주로 iPad에서 세로 방향 레이아웃에 해당verticalSizeClass
Compact: 디바이스의 높이가 작은 경우, 주로 iPhone에서 가로 방향 레이아웃에 해당
Regular: 디바이스의 높이가 큰 경우. 주로 iPad에서 가로 방향 레이아웃에 해당여기서 세로방향 = 기기를 똑바로 세웠을때 , 가로방향 = 기기를 landScape(옆으로 눕힐때)했을때 라고 보면 이해가 더 쉬울 것 같다.
이처럼 UITraitCollection의 크기 클래스에 따라 레이아웃 및 UI 요소를 동적으로 조정하여 다양한 화면 크기와 방향에 대응할 수 있다.
'개발 (dev) > iOS' 카테고리의 다른 글
Swift - ARC (Automatic Reference Counting) (0) 2023.12.01 Swift - 타입 캐스팅 (2) 2023.11.22 Swift - 네임드 튜플 정의하기 (0) 2023.10.31