clamp
Clamp
clamp
글쓰기 관리
전체 방문자
오늘
어제
  • 분류 전체보기 (509)
    • IOS (85)
    • SwiftUI+TCA+Combine (9)
    • RxSwift + MVVM (56)
    • Clean Architecture (12)
    • SWIFT (56)
    • iOS - TDD (2)
    • 디자인패턴 (4)
    • CS (56)
      • 알고리즘 (29)
      • 운영체제 (15)
      • 자료구조 (2)
      • 네트워킹 (4)
      • 기타 (6)
    • 회고 (0)
    • Firebase (18)
    • SwiftUI (10)
    • iOS - UIKit (11)
    • iOS - 오픈소스 (6)
    • 코딩테스트 (166)
      • 프로그래머스 (164)
    • 정보처리기사 (14)
    • GitHub (2)
글쓰기 / 관리자

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • uikit
  • Swift
  • ㅅ
  • Q

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
clamp

Clamp

[iOS] UITraitEnvironment
IOS

[iOS] UITraitEnvironment

2023. 9. 16. 16:06

iOS interface environment에는 다음과 같은 trait이 포함됩니다.

  • horizontal / vertical size class (수평, 수직 사이즈 클래스)
  • display scale (디스플레이 픽셀에 관합니다.)
  • user Interface idiom ( Enum으로 phone, pad, tv, carplay, mac...)
  • user Interface style( 라이트모드, 다크모드인지.. lightMode, darkMode, unspecifiedMode)
 
여기서 horizontal / vertical의 size class만 살짝 보고 가겠습니다.
 

size class

 
size class는 portrait, landscape에 따라 현재 화면의 size class가 Compact / Regular로 결정됩니다.
portrait: 세로모드 landscape: 가로모드 
또한 기기마다 Compact, Regular가 다르게 설정되어있고, 이에 따라 tabBar의 막대가 높아지는 것 같이 동적으로 layout을 조정한다고 합니다.

 

기기별 정보가 더 필요하시다면 아래에서 확인할 수 있습니다.

 https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/ 

 

 

이 프로토콜을 채택하는 객체의 특성 환경(trait environment)에 접근하려면 

protocol TraitEnvironment

UITraitEnvironment에 정의되어 있는 traitCollection 프로퍼티에 접근하면 됩니다.

 

또한 trait이 변경될 때 시스템이 호출하는 메서드가 

func traitCollectionDidChange 입니다.

 

trait이 변경되었을 때 특정한 일을 해주고 싶다면, traitCollectionDidChange 메서드를 override하고 사용하면 됩니다.

아래처럼 말이죠.

override traitCollectionDidChange()

UITraitCollection은 system으로부터 UIScreen으로 전달되고, View계층 구조를 따라 최하위의 View까지 전달됩니다.

 

 

** UIView는 UITraitEnvironment를 채택하고있습니다.

 

 

 

 

 

 

https://developer.apple.com/videos/play/wwdc2023/10057/

 

Unleash the UIKit trait system - WWDC23 - Videos - Apple Developer

Discover powerful enhancements to the trait system in UIKit. Learn how you can define custom traits to add your own data to...

developer.apple.com

 

저작자표시 비영리 동일조건 (새창열림)
    'IOS' 카테고리의 다른 글
    • [iOS] DeepLink로 앱을 띄워보자
    • [iOS] App Thinning과 Bitcode에 대하여
    • [Tuist] Manifest not found 에러
    • [Tuist] PinLayout과 FlexLayout사용시 발생하는 문제
    clamp
    clamp
    주니어 iOS개발자의 발악!!!!!!!

    티스토리툴바