SwiftUI Weekly 243호: 접이식 iPhone에 맞춘 앱 레이아웃
SwiftUI Weekly - Issue #243
핵심 요약
- iOS 27.1의 SwiftUI는 뷰가 제어할 수 없는 하드웨어·시스템 영역을 ReservedRegion으로 보고하며, 공간을 나누는 division과 영역을 가리는 occlusion으로 구분한다.
- ArrangementView의 size class 동작에는 iOS 27.1에서 버그가 있었으며, 해당 문제는 iOS 27.2에서 수정됐다.
- iPhone Duo 대응 주제로 기기 자세 변경, 적응형 툴바, 접힘부와 힌지, 기기를 열고 닫을 때 바뀌는 레이아웃을 다룬다.
도입
이번 호는 크기와 화면 비율이 다른 두 디스플레이를 제공하는 접이식 iPhone Duo에 맞춰 앱을 조정하는 방법을 다룬다. iOS 27.1 SwiftUI의 ReservedRegion은 뷰의 좌표 공간 중 하드웨어나 시스템 요소가 차지하는 영역을 나타낸다. 또한 ArrangementView가 접힘부에서 size class를 처리하는 방식을 살피고, iOS 27.1의 동작 오류가 iOS 27.2에서 수정됐음을 짚는다.
상세 요약
접이식 디스플레이의 영역을 표현하는 ReservedRegion
iOS 27.1의 SwiftUI는 뷰의 좌표 공간 가운데 하드웨어나 시스템 요소가 차지하는 부분을 ReservedRegion으로 보고한다. 이 영역은 두 종류로 나뉜다.
division: 사용 가능한 공간을 나누는 영역이다. iPhone Duo 내부 디스플레이의 접힘부가 예시다.occlusion: 하드웨어가 덮고 있는 영역이다. 카메라가 예시다.
이 구분은 화면에서 사용할 수 있는 공간을 나누는 접힘부와, 하드웨어가 가리는 부분을 서로 다른 종류의 영역으로 다룬다.
ArrangementView와 size class
이번 호는 접이식 iPhone Duo의 접힘부에서 SwiftUI ArrangementView가 size class를 처리하는 방식을 살핀다. 여기서 확인된 iOS 27.1의 동작에는 버그가 있었고, 해당 문제는 iOS 27.2에서 수정됐다. 관련 세부 내용은 ArrangementView 내부 뷰의 size class 읽기에서 이어서 볼 수 있다.
기기 자세에 맞춰 앱 조정하기
접이식 기기를 지원하는 작업에는 화면 크기 변화만이 아니라 기기 자세, 적응형 툴바, 접힘부와 힌지, 기기를 열고 닫을 때 반응하는 레이아웃이 포함된다. 이번 호의 영상은 이전 iPad 친화형 앱을 이어서 iPhone Duo에 맞게 조정하는 과정을 다룬다. 관련 주제는 iPhone Duo에 맞춰 SwiftUI 앱 레이아웃 조정하기에서 확인할 수 있다.
다만 접힘부를 적극적으로 활용하는 레이아웃을 처음부터 전제로 삼지는 않는다. 다음 주에 앱을 업데이트하는 사용자 대부분은 일반 iPhone을 들고 있을 수 있다는 점을 고려해, 먼저 사용자가 취할 수 있는 자세에서 앱이 동작하도록 한다. 힌지를 레이아웃에 반영하는 설계는 그 기능이 필요한 작업을 구체적으로 정할 수 있을 때 선택한다.
결론
접이식 기기의 자세와 접힘부를 활용하는 레이아웃을 다루되, 첫 단계부터 힌지에 의존하는 구성을 만들 필요는 없다는 관점을 제시한다. 우선 앱이 사용자가 취할 수 있는 자세에서 동작하도록 하고, 접힘부를 레이아웃에 반영하는 방식은 그에 맞는 작업이 분명할 때 고려한다. 기기 자세, 툴바, 접힘부와 열고 닫는 동작에 반응하는 레이아웃이 주요 주제다.