1. UIScreen: 화면 자체를 나타냄
- 역할: 실제 디스플레이 장치와 관련된 정보를 제공합니다.
- 설명:
- UIScreen은 iOS 장치의 물리적 화면 자체를 나타냅니다.
- 화면의 크기, 해상도, 스케일 정보 등을 가져오는 데 사용됩니다.
- 주요 속성 및 메서드:
- UIScreen.main: 주 화면(기본 디스플레이 장치)을 나타냅니다.
- UIScreen.screens: 연결된 모든 디스플레이(예: 외부 모니터)를 나타냅니다.
- bounds: 화면의 크기(픽셀 기준).
- nativeBounds: 실제 디바이스의 픽셀 크기.
- scale: 화면의 스케일 값(예: @2x, @3x).
- 사용 예시:
// 주 화면의 크기 가져오기
let screenSize = UIScreen.main.bounds.size
print("Screen size: \(screenSize)")
- 언제 사용하는가?
- 화면 크기에 따라 UI 레이아웃을 조정해야 할 때.
- 여러 화면(외부 디스플레이)을 지원할 때.
2. UIScene: 앱의 논리적 화면을 나타냄
- 역할: 앱에서 하나의 논리적 UI 흐름 또는 사용자 작업 환경을 나타냅니다.
- 설명:
- UIScene은 앱의 논리적인 화면 컨텍스트를 나타냅니다.
- iOS 13 이후 도입된 멀티윈도우 지원을 위한 개념입니다.
- 앱은 하나 이상의 UIScene을 가질 수 있습니다.
- 예를 들어, iPad에서 한 앱을 멀티윈도우로 실행하면 각 윈도우는 서로 다른 UIScene으로 관리됩니다.
- 주요 속성 및 메서드:
- UIScene.session: 현재 장면의 세션(UISceneSession)을 반환.
- UIScene.delegate: 장면의 delegate 객체(UISceneDelegate).
- UIScene.state: 현재 장면의 상태(예: 활성화, 비활성화).
- 사용 예시:
// UISceneDelegate에서 현재 Scene의 상태 확인
func sceneDidBecomeActive(_ scene: UIScene) {
print("Scene became active")
}
- 언제 사용하는가?
- 앱에서 멀티윈도우를 지원할 때.
- 앱의 논리적 UI 흐름을 관리해야 할 때.
언제 각각을 사용하는가?
- UIScreen:
- 디스플레이 관련 정보가 필요할 때:
- 화면 크기(bounds)에 따라 레이아웃을 조정.
- 외부 디스플레이 연결 시 각 화면 정보를 확인.
- 디스플레이 관련 정보가 필요할 때:
let screenSize = UIScreen.main.bounds.size
- UIScene:
- 멀티윈도우를 지원하거나, 논리적인 UI 상태를 관리할 때:
- iPad에서 Split View나 Slide Over 같은 멀티윈도우 기능.
- 앱의 특정 UI 상태를 관리(예: 활성화, 비활성화, 세션 복원).
- 멀티윈도우를 지원하거나, 논리적인 UI 상태를 관리할 때:
func sceneDidBecomeActive(_ scene: UIScene) {
print("This scene is now active")
}
'UIKIT' 카테고리의 다른 글
탭바뷰컨트롤러에서 액션시트 나오게 하는 방법 (0) | 2024.12.20 |
---|---|
델리게이트 패턴으로 사진 선택하기 (0) | 2024.12.20 |
setContentHuggingPriority, setContentCompressionResistancePriority (0) | 2024.12.17 |
UICollectionViewCompositionalLayout - 섹션 헤더 (0) | 2024.12.11 |
UICollectionViewCompositionalLayout - 간단 사용 (0) | 2024.12.11 |