ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift - UITraitCollection에 대해서 알아보자
    개발 (dev)/iOS 2024. 1. 21. 12:18

    프로젝트를 진행하면서 UITraitCollection의 userInterfaceStyle을 사용하여 다크 모드와 라이트 모드를 다루는 코드를 작성하게 되었는데, UITraitCollection에 대해서 더 공부하고 싶어져서 글을 작성하게 되었다.

     

    UITraitCollection 의 단어뜻을 해석해보면 UI에 대한 특성들 모음집 이라고 해석해 볼 수 있다.

    애플의 공식문서를 읽어보니 단어뜻이랑 거의 일치하는 것 같다. 

     

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

     

    UITraitCollection | Apple Developer Documentation

    A collection of data that represents the environment for an individual element in your app’s user interface.

    developer.apple.com

     

    공식문서를 읽어보면 UITraitCollection은 레이아웃의 방향, 유저의 디스플레이 크기, 사이즈 클래스 등의 유저 인터페이스의 다양한 상태를 다루는 UITraitEnvironment 프로토콜을 채택하고 있다.

    그 외에도 자주 쓰이는 UIView, UIViewController등 많은 클래스도 UITraitEnvironment 프로토콜을 채택하는것을 확인할 수 있었다.

     

    그리고 풀스크린으로 다양한 기기에서 앱을 실행할때, 두개의 클래스를 정의하여 사용하는데, 이때의 클래스는 Swift에서의 class가 아니라 계층이라는 말을 표현한 것 같다. horizontalSizeClassverticalSizeClass를 사용하는데 각각 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
Designed by Tistory.