2026년 8월 이 사이트에는 아직 폴더블 iPhone 출시일을 쫓는 글이 있었다. 이름도 날짜도 정해지지 않았다. 9월 9일 Apple 뉴스룸은 제품 이름을 iPhone Duo로 정했다. 바깥 화면 5.4인치, 펼친 안쪽 화면 7.6인치, 두 화면의 비율은 같고, 칩은 A20 Pro다. 미국 시작 가격은 256GB에 1999달러. 용량은 512GB, 1TB, 2TB도 있다. 예약은 10월 16일 태평양 시간 오전 5시. 중국을 포함한 70곳 이상이 10월 23일, 28곳은 10월 30일. 오늘은 10월 13일이고 예약까지 사흘이다. 이 글은 출시일을 맞히지 않는다. SwiftUI를 얼마나 고칠지, Xcode에서 어떤 자세를 볼지, Mac을 살지 빌릴지를 정한다.
단말기 가격으로 견적하면 안 되는 이유
옛 계산과 새 계산은 구체적으로 부딪힌다. 옛 계산은 「폴더블을 한 대 사고, 사람-일을 2주 더한다」. 1999달러는 예산 상한처럼 보인다. 실제로는 검수 자산이지 공수가 아니다. 새 계산은 레이아웃이 아직 화면을 읽는지부터 본다. Apple 준비 페이지는 직접 적는다. iOS 27 SDK 이후로 빌드한 앱은 Duo가 접히고 펼쳐질 때 크기가 바뀐다. 화면 크기를 고정하고, 방향을 고정하고, 기기를 가정하면 레이아웃이 늘어나거나 잘리거나 자리를 틀린다.
같은 바이너리가 SDK 세 단계에서 다르게 보인다. 이것이 비용의 첫 칼이고 디자인 취향이 아니다. 준비 페이지의 대조는 이렇다. iOS 26 SDK 이전도 실행된다. 펼치면 창이 가운데 여백과 함께 있고, 닫으면 내용이 상태 막대와 카메라 왼쪽으로 붙는다. iOS 27 SDK는 안쪽 화면의 대부분을 채우고 오른쪽 상태 막대는 아직 피한다. iOS 27.1 SDK 이후가 최적화다. 표시 영역을 쓰고, 도구 막대와 탭 막대는 상태 막대 아래에 세로로 선다. 스토어 이미지만 바꾸고 옛 SDK로 내는 팀은 사용자에게 여백을 보여 준다. 「폴더블 지원」이 아니다.
둘째 칼은 테스트 행렬이다. 바깥 화면의 size class는 다른 iPhone과 같다. 세로는 수직 regular, 수평 compact. 가로는 둘 다 compact. 안쪽 화면은 사이드바를 둘 넓이라 수평과 수직이 모두 regular다. 더 중요한 점은 안쪽 화면이 Info에 선언한 지원 방향을 지키지 않는다는 것이다. UIDevice.current.orientation, statusBarOrientation, interfaceOrientation으로 레이아웃을 나누면 열고 닫고 Split View에 들어갈 때 잘못된 가지로 간다. Apple의 지시는 지금 가진 너비와 높이를 비교하라는 것이다. UIKit은 view.bounds, SwiftUI는 GeometryReader의 크기.
셋째 칼이 기계다. Xcode 27.1의 iPhone Duo 시뮬레이터, Device Hub의 열기·닫기·회전, macOS 27의 iPhone Mirroring 늘이기는 모두 Mac 위에 있다. Windows에는 이 사슬이 없다. 빌드 기계를 고르는 법은 Xcode Cloud와 원격 Mac에 있다. Xcode Cloud는 컴파일할 수 있다. Device Hub 앞에 앉아 닫힘, 반접힘, 펼침을 각각 돌리는 일을 대신하지 못한다.
UIScreen.main을 읽는지다. 자세는 시스템의 것이고, 크기는 지금 창의 것이다.
작업을 어떻게 나누나
「폴더블 지원」을 하나의 이정표로 쓰면 일정은 반드시 밀린다. 돈이 실제로 나가는 곳으로 세 층으로 나눈다. 한 층이 없으면 사람-일과 장비비가 한 견적에 섞인다.
| 도구 | 입구 | 할 수 있는 일 | 맥락 | 맞는 사람 |
|---|---|---|---|---|
| SwiftUI / UIKit 수정 | 저장소의 레이아웃 | 화면 싱글톤, 방향 분기, 고정 크기를 빼고 막대는 내비게이션에 돌려준다 | size class, 안전 영역, 접힘과 카메라의 예약 영역 | 10월 23일 전후에 내거나 업데이트하는 앱 |
| Xcode 27.1 자세 테스트 | Device Hub의 iPhone Duo | 닫힘, 반접힘, 펼침. 각각 한 번 회전. macOS 27 창 늘이기를 더할 수 있다 | SDK 세 단계의 여백, 회피, 전체 화면 세로 막대 | 데모 영상이 아니라 회귀할 검수표가 필요한 팀 |
| Mac 노드 | 보유, 구매, 또는 원격 임대 | 맞는 macOS에 Xcode를 설치하고 시뮬레이터와 서명을 돌린다 | DerivedData, 시뮬레이터 런타임, 인증서 | 남는 Apple Silicon이 없거나 일상 기기의 디스크를 비울 수 없다 |
수정 층에서 SwiftUI는 자동 면제가 아니다. Human Interface Guidelines는 표준 컴포넌트를 쓰고 크기 변화를 견디면 자세가 따라오고, 자세마다 화면을 다시 만들 필요가 없다고 적는다. 바깥은 compact 너비, 안쪽은 regular 너비. 그것이 모든 자세의 바닥이다. 반대로 고정 너비, 기기 높이 분기, 직접 그린 도구 막대는 시스템이 고쳐 주지 않는다. 준비 페이지가 찾으라고 이름을 댄 것은 UIScreen.main, userInterfaceIdiom == .phone 또는 .pad, regular 너비를 「이것은 iPad」로 다루는 코드, bounds.height == 844 같은 알려진 기종 표다.
빠지기 쉬운 측정이 하나 있다. 공개된 Xcode 27.1 시뮬레이터 프로브는 바깥 화면을 466×678 pt, 안쪽 화면을 669×951 pt(둘 다 @3x)로 적고, 앱이 이미 안쪽 화면에 있을 때 UIScreen.main.bounds가 여전히 바깥 466×678을 보고하는 것을 봤다. 이 점 크기는 공식 금지를 설명하려는 것이지 새로운 == 466을 쓰라는 것이 아니다. 반접힘에서는 가운데 예약 영역이 실제 가림이 된다. 프로브는 약 40 pt로 적었다. 검수에서는 자기 Xcode가 읽는 ReservedRegion 사각형을 쓰고, 블로그 숫자를 상수로 넣지 않는다.
시스템 막대를 UIToolbar, UINavigationBar, UITabBar로 뷰에 붙이지 않는다. SwiftUI에서는 toolbar를 NavigationStack이나 NavigationSplitView에 더한다. UIKit에서는 toolbar item을 내비게이션 컨트롤러 안의 뷰 컨트롤러에 넘긴다. 27.1이 이 막대를 세로로 세운 뒤에도 직접 만든 막대는 내용 위에 가로로 남는다. 접힘과 카메라는 예약 영역으로 나타낸다. SwiftUI는 GeometryProxy에서 ReservedRegion을 읽는다. 좌우 분할이나 겹침이 필요하면 ArrangementView의 split과 overlay를 쓰고, 「펼침」이 참일 때만 나오는 두 번째 뷰 트리를 만들지 않는다.
import SwiftUI
struct DuoRoot: View {
@Environment(\.horizontalSizeClass) private var width
var body: some View {
NavigationSplitView {
Sidebar()
} detail: {
Detail()
.onGeometryChange(for: CGSize.self) { proxy in
proxy.size
} action: { size in
// Fold changes size mid-session. Do not cache UIScreen.main.bounds.
relayout(size, regularWidth: width == .regular)
}
}
.toolbar {
ToolbarItem(placement: .primaryAction) {
Button("Save", action: save)
}
}
}
}
이것은 완성된 공사가 아니다. 세 가지만 고정한다. 분할은 NavigationSplitView에 맡겨 안쪽 regular 너비에서 사이드바를 내고, 바깥 compact에서는 거둔다. 크기는 onGeometryChange로 접는 도중에 다시 읽는다. 저장 버튼은 시스템 toolbar에 두어 27.1이 상태 막대 아래로 세울 수 있게 한다. .fill 전체 화면 이미지는 넓어지면 주제가 잘린다. 현재 size class나 비율로 fill과 fit을 바꾸거나 초점을 둔다.
공기, 테스트, Mac 비용
진짜 차이는 코드가 「전화 화면은 하나」라고 아직 가정하는지이고, 디자이너가 접힘 애니메이션을 원하는지가 아니다. 아래 두 표는 같은 열을 쓴다. 주 수는 일정 추정이지 외주 견적서가 아니다. 화면 수와 직접 그린 그림이 주를 벌린다. Mac 가격은 이 사이트 요금 페이지의 달러다. 구매 행은 다른 기계이므로 주석 없이 손익분기로 접지 않는다.
| 도구 | 입구 | 할 수 있는 일 | 맥락 | 맞는 사람 |
|---|---|---|---|---|
| 이미 적응한 SwiftUI | size class, 시스템 탐색, UIScreen.main 없음 | 세로 막대, 접힘 예약 영역, 전체 화면 초점 확인 | 근무일 3–7일에 닫힌다 | iPad 분할을 견딘 작은 앱 |
| SwiftUI와 UIKit 혼합 | 고정 frame과 맞춤 막대가 남음 | 화면 크기와 방향 판단을 바꾸고 막대를 컨테이너로 돌린다 | 2–4주. 창 늘이기를 더한다 | 본체는 SwiftUI, 모서리는 옛 UIKit |
| 고정 크기 UIKit | 393, 844, 기종 목록으로 분기 | 컨테이너를 다시 만들고, 비대칭 안전 영역, idiom 판단을 뺀다 | 4–8주의 화면 목록 | 몇 년 동안 한 장의 iPhone 유리에 그려 온 상점이나 도구 |
| 도구 | 입구 | 할 수 있는 일 | 맥락 | 맞는 사람 |
|---|---|---|---|---|
| 이미 가진 Apple Silicon Mac | 로컬 Xcode | 시뮬레이터의 모든 자세. 실기가 있으면 USB | 장비 증분은 0. 다만 일상의 DerivedData와 디스크를 다툰다 | 한 바퀴 적응이고, 기계가 이미 대상 Xcode를 설치할 수 있다 |
| M4 16GB 일 임대 | 원격 데스크톱 | Device Hub 한 바퀴 | 하루 20.2달러. 근무 5일은 101달러 | 적응이 끝났고 금요일 전에 정말 닫힌다 |
| M4 16GB 주 임대 | 원격 데스크톱 | 한 주의 회귀 | 주 54.5달러. 2주면 109달러 | 금요일에 끝날지 모른다 |
| M4 16GB / 24GB 월 임대 | 원격 데스크톱 | 수정 기간의 회귀 기계. 24GB는 시뮬레이터를 동시에 더 연다 | 월 100.9 또는 200.9달러 | 혼합이거나 고정 크기이고 공기가 주 단위 |
| M6 Mac mini 구매 | 로컬 고정 자산 | 적응 뒤에도 일상 Xcode와 CI를 계속 | 미국 시작가 899달러, 교육 799. 2026-08-25 발표, 09-22부터 공급 | 여러 사람이 나누고 Duo 뒤에도 릴리스가 멈추지 않는다 |
일 임대를 곱하면 결론은 직관과 반대다. 16GB의 20.2×5 = 101.0은 월 100.9와 이미 같다. 20.2×7 = 141.4는 주 54.5보다 높고 월보다 높다. 주 54.5×2 = 109.0도 한 달보다 조금 높다. 24GB도 같다. 40.2×5 = 201.0이 월 200.9에 맞는다. 그래서 「먼저 일 임대로 시험」은 하루나 이틀에 닫힌다고 알 때만 성립한다. 이틀째 스캔이 UIScreen.main 목록을 내면 과금을 월로 바꾼다. 여덟째 날까지 일 임대를 내는 것은 테스트가 아니라 과금 주기에 대한 돈이다.
월 100.9×9 = 908.1은 숫자상 M6 Mac mini 미국 시작가 899달러에 가깝다. 이 두 대는 같은 기계가 아니다. 빌리는 것은 M4 16GB 클라우드 노드이고, 사는 것은 M6 시작 구성이며 디스플레이, 키보드, 세금이 빠진다. 아홉 달을 손익분기로 쓰지 않는다. 구매가 맞는 조건은 적응이 끝난 뒤에도 그 Mac이 매일 컴파일하는 것이지, Duo 자세가 끝나 놀고 있는 것이 아니다. 살지 빌릴지의 긴 논의는 연구용 구매와 임대에, 개발 부하는 M6 Mac mini가 개발자에게 맞는지에 있다.
사람-일을 이 글에서 달러로 바꾸지 않는다. 지역 단가는 한 자릿수가 다르다. 「수정은 8000에서 25000달러」라고 쓰면 결정이 남의 견적을 따르는 일이 된다. 표에 쓸 수 있는 것은, 4주 혼합 적응에서 Mac 행이 월 100.9달러라는 점이다. 근무일 20일을 일 임대로 사면 같은 행은 404달러가 된다. 공수는 여전히 큰 쪽이고 기계는 작은 쪽이다. 100달러를 아끼려고 1999달러 전화를 컴파일 기계로 사지 말고, 5일 감사를 위해 899달러 Mac mini를 사지 않는다.
장면별로 고르는 법
| 당신이 | 고른다 | 이유 |
|---|---|---|
| 순수 SwiftUI이고 iPad 분할을 견딘다 | 보유 기기 또는 일 임대. 먼저 스캔 | 바닥은 있다. 남은 것은 세로 막대, 예약 영역, 전체 화면 이미지 |
| 이틀째 스캔이 UIScreen.main 목록이다 | 바로 월 임대. 주말까지 일 임대를 내지 않는다 | 근무 5일의 일 임대는 이미 한 달 |
| 고정 너비가 많은 UIKit 상점 | 24GB 월 임대. 4–8주 화면 목록 | Duo와 다른 기종을 동시에 열면 16GB는 시뮬레이터가 먼저 먹는다 |
| App Store 이미지만 바꾸고 싶다 | 먼저 27.1 SDK, 그다음 이미지 | 옛 SDK의 안쪽 화면은 여백이다. 그림이 예뻐도 다른 기기다 |
| CI는 이미 Xcode Cloud | Cloud는 빌드, 자세 회귀는 원격 Mac | 대화형 Device Hub는 빌드 로그에 없다 |
| 사무실에 Mac이 없다 | 한 대 빌리고 먼저 sw_vers와 xcodebuild -version | 시스템이 안 맞는 날은 돈을 내도 유효한 테스트가 아니다 |
| 적응 뒤에도 오래 릴리스한다 | M6 구매는 그다음에 비교한다. 첫 주에는 사지 않는다 | 899달러가 사는 것은 이후 이용률이지 이번 자세가 아니다 |
실기 예산은 따로 한 줄에 둔다. 1999달러는 미국 256GB 시작가다. MacRumors가 9월 28일에 적은 상위 미국 가격은 512GB 2199, 1TB 2599, 2TB 3199달러다. 주문은 보고 있는 Apple 상점 페이지를 따르고, 중국 가격을 미국 숫자로 대체하지 않는다. 실기 한 대면 힌지 감각과 시뮬레이터 노트가 재현하지 못하는 항목을 본다. 모두에게 Duo를 줘도 UIScreen.main은 사라지지 않는다.
추천 조합
A — 개인이고 이미 적응됨: Xcode 27.1. 보유 기기 또는 원격 하루. 준비 페이지의 「get my app ready for iPhone Duo」를 먼저 돌린다. 스킬은 UIScreen.main, 방향, idiom을 찾는다. 비어 있으면 Device Hub에서 닫힘, 반접힘, 펼침. 스토어 이미지는 App Store Connect 미리보기에서 Duo를 본다. 이번 한 바퀴를 위해 M6를 사지 않는다.
B — 작은 팀, 코드가 섞임: 첫 주는 스캔과 화면 싱글톤만. 주 임대거나 바로 월 임대. 일 임대를 이레까지 굴리지 않는다. 둘째, 셋째 주에 시스템 막대로 되돌리고 예약 영역을 더한다. 넷째 주에 자세 행렬을 회귀에 적는다. 주요 경로마다 세 자세로 한 장. CI는 기존 빌드 기계. 사람이 접고 펴는 회차는 같은 원격 Mac을 쓰고, 세션이 끝나면 DerivedData를 지운다. 따뜻한 캐시를 통과로 치지 않는다. 24GB 월 200.9달러는 Duo와 다른 시뮬레이터를 같이 열 때만.
C — 출시 주에 제출: 오늘은 10월 13일, 예약은 16일, 출시는 23일. 약속할 수 있는 것은 27.1 SDK에서 주요 경로가 여백이 아니고, 세로 막대가 주 버튼을 가리지 않으며, 전체 화면 주제가 남는 것이다. 끝나지 않은 접힘 애니메이션을 스토어 문안에 쓰지 않는다. 노드 월 요금은 Mac mini 요금, 신청은 임대 페이지. 시스템과 계정은 도움말. 임대 이미지에 Xcode 27.1이 미리 설치돼 있다고 가정하지 않는다.
흔한 실수
- iOS 26 SDK로 넘긴다: 실행은 된다. 안쪽 화면 주변은 비어 있다. 사용자는 여백을 「적응 중」으로 읽지 않는다.
- 바깥 화면을 UIScreen.main으로 고친다: 펼친 뒤 메인 화면 싱글톤은 바깥 크기를 계속 보고할 수 있다. 951 pt 너비 영역을 466 pt 너비로 배치한다.
- 방향으로 세로와 가로를 정한다: 안쪽 화면은 지원 방향을 지키지 않는다. 세로와 가로는 지금 창의 비율로 잡는다.
- regular 너비를 iPad 전용으로 본다: Duo 안쪽 화면은 숨겨 둔 iPad 레이아웃을 그대로 꺼낸다. 전화에 둘 생각이 없던 사이드바 밀도까지 포함한다.
- 일 임대를 한 주 다 낸다: 16GB 근무 5일은 이미 월 임대다. 여덟째 날은 테스트가 아니라 과금 주기에 대한 돈이다.
- 1999달러를 모든 티켓에 적거나, 실기를 아예 빼 둔다: 실기는 힌지 검수의 한 줄이지 수정 공수의 단가가 아니다. 시뮬레이터는 Apple이 적은 레이아웃 본선 그대로다.
일곱 단계
- 같은 소스를 설치할 수 있는 SDK에 각각 맞추고, 여백인지, 오른쪽 상태 막대 회피인지, 전체 화면 세로 막대인지를 먼저 기록한다. 목표는 27.1이다.
UIScreen.main,UIDevice.current.orientation,statusBarOrientation,interfaceOrientation,userInterfaceIdiom, 그리고 844, 852, 932 같은 높이 상수를 전체 검색한다.- Xcode 코딩 도우미에 App Resizability를 돌리거나, 터미널에서
xcrun agent skills export로 다른 에이전트에 넘긴다. 스킬은 대부분을 찾는다. 못 찾는 것은 위 목록으로 채운다. - Device Hub의 iPhone Duo를 열고, 닫힘, 반접힘, 펼침을 각각 한 번 회전한다. 주요 경로는 칸마다 한 장을 남긴다.
- 도구 막대가 상태 막대 아래에 세로인지, 접힘과 카메라 예약 영역이 버튼을 누르지 않는지, 전체 화면 주제가 남는지 본다.
- Duo 스크린샷 규격으로 App Store 자료를 바꾸고 Connect 미리보기로 본다. iPhone 18 캔버스를 억지로 줄이지 않는다.
- Mac 과금 주기를 고른다. 하루나 이틀은 일 임대. 스캔이 더러우면 월 임대. 적응 뒤 매일 컴파일하면 899달러 M6 시작가와 이후 월 임대를 비교한다. 주문 전에 노드에서
sw_vers와xcodebuild -version을 실행한다.
FAQ
코드를 안 바꿔도 iPhone Duo에서 열리나요?
열립니다. iOS 26 SDK 이전으로 빌드하면 펼쳤을 때 창이 가운데 여백과 함께 있고, 닫으면 내용이 상태 막대와 카메라 왼쪽에 붙습니다. 실행은 적응이 아닙니다. 안쪽 화면을 채우고 세로 막대를 쓰려면 iOS 27.1 SDK가 필요합니다.
iOS 27.1 SDK가 필수인가요?
안쪽 화면을 채우고 도구 막대와 탭 막대를 상태 막대 아래로 세우려면 27.1이 필요합니다. 공개 전에 내용이 이 세로 막대를 견디는지 확인합니다. 이미지만 바꾸고 바이너리가 옛 SDK면 안쪽 화면은 여백 그대로입니다.
시뮬레이터만으로 충분한가요?
레이아웃 본선에는 충분합니다. Apple은 Xcode 27.1의 iPhone Duo 시뮬레이터를 완전한 경험을 시험하는 최선의 방법이라고 적고, Device Hub 아래에서 열고 닫고 회전하고 접을 수 있습니다. 힌지 감각에는 실기가 필요합니다. 1999달러는 그 한 줄의 자산이며 모든 SwiftUI 티켓에 나누지 않습니다.
Mac 없이도 이번 적응을 할 수 있나요?
Windows에서는 Xcode 27.1을 돌릴 수 없습니다. M4 16GB 일 임대는 20.2달러이고 근무 5일은 월 100.9달러와 같습니다. 노드 macOS가 고정한 Xcode를 설치할 수 있는지 먼저 확인합니다. 시스템 요구는 Apple의 Xcode 시스템 요구를 따릅니다. iPhone Mirroring 늘이기를 준비 페이지는 macOS 27이라고 적습니다.
SwiftUI는 접힘에 자동으로 맞추나요?
시스템 탐색, size class, 표준 컴포넌트는 자세를 따릅니다. 고정 frame, 맞춤 막대, 방향 판단, UIScreen.main은 따르지 않습니다. 안쪽 화면은 regular 너비라, 예전에는 iPad에만 나오던 레이아웃이 이 전화에 나타납니다.
정리
iPhone Duo는 10월 23일 출시된다. 적응 비용은 1999달러 그 줄이 아니다. 먼저 SDK 단계와 UIScreen.main을 보고, 다음에 세 자세를 일정에 넣고, 마지막으로 「일 임대 5일은 한 달」로 Mac 과금 주기를 정한다. 적응이 끝난 작은 앱은 보유 기기나 단기 임대. 혼합과 고정 크기는 월 임대로 회귀를 남긴다. M6 구매는 릴리스가 멈추지 않을 때만 비교한다. 원격 노드는 임대와 요금, 계정과 시스템은 도움말.