В августе 2026 на этом сайте ещё был текст о дате выхода складного iPhone. Имя и дата не были окончательными. 9 сентября новостная комната Apple назвала продукт iPhone Duo: внешний экран 5,4 дюйма, внутренний 7,6 дюйма, одно и то же соотношение сторон, чип A20 Pro. Стартовая цена в США — 1999 долларов за 256 ГБ, выше идут 512 ГБ, 1 ТБ и 2 ТБ. Предзаказы открываются 16 октября в 5 утра по тихоокеанскому времени. Больше 70 стран и регионов, включая Китай, получают аппарат 23 октября, ещё 28 — 30 октября. Сегодня 13 октября. Эта статья не угадывает дату. Она отвечает на вопрос планирования: сколько должен измениться SwiftUI, какие позы должен закрыть Xcode, и Mac — это покупка или аренда.
Почему цена аппарата — неверная оценка
Старый способ и новый расходятся в конкретной точке. Старый способ — «купить складной и прибавить две человеко-недели». 1999 долларов выглядят как потолок бюджета. Это актив приёмки, а не объём инженерии. Новый способ начинает с вопроса, читает ли вёрстка ещё экран. Страница подготовки Apple прямая: приложения, собранные на SDK iOS 27 и новее, меняют размер, когда iPhone Duo складывается. Жёсткие размеры экрана, фиксированные ориентации и допущения об устройстве растягивают, обрезают или сдвигают вёрстку.
Один и тот же бинарник выглядит по-разному на трёх уровнях SDK. Это первый разрез стоимости, а не вкус дизайна. Сравнение самой Apple: сборка на SDK iOS 26 или старше всё ещё запускается. В открытом виде окно сидит по центру с пустым полем вокруг. В закрытом контент уходит влево от статус-бара и камеры. Сборка на SDK iOS 27 заполняет большую часть внутреннего экрана и всё ещё избегает статус-бара на правом крае. Сборка на SDK iOS 27.1 — оптимизированное состояние: приложение занимает всю площадь, а панели инструментов и вкладок стоят вертикально под статус-баром. Команда, которая только меняет скриншоты магазина и отдаёт старый SDK, показывает покупателям letterbox. Это не «мы поддерживаем складной».
Второй разрез — матрица тестов. На внешнем экране size class совпадает с другими iPhone: портрет regular по вертикали и compact по горизонтали, альбомный режим compact по обеим осям. На внутреннем экране есть место для боковой панели, поэтому обе оси regular. Внутренний экран также не соблюдает поддерживаемые ориентации интерфейса, которые вы объявили. Вёрстка, которая ветвится по UIDevice.current.orientation, statusBarOrientation или interfaceOrientation, берёт неверную ветку, когда устройство открывается, закрывается или входит в Split View. Указание Apple — сравнивать ширину и высоту, которые у вас есть на самом деле: view.bounds в UIKit, размер из GeometryReader в SwiftUI.
Третий разрез — машина. Симулятор iPhone Duo в Xcode 27.1, кнопки открыть-закрыть-повернуть в Device Hub и тест растяжения через iPhone Mirroring на macOS 27 живут на Mac. Этой цепочки нет в Windows. Как команда выбирает сборщик, написано в сравнении Xcode Cloud против удалённого Mac. Xcode Cloud умеет компилировать. Он не сидит с вами в Device Hub, пока вы поворачиваете закрытое, полусложенное и открытое.
UIScreen.main. Позой владеет система. Размером владеет текущее окно.
Как работа на самом деле делится
Одна веха под названием «поддержать складной» съедет. Разделите расход по трём местам, откуда деньги реально уходят. Если слоя не хватает, смета смешивает человеко-дни с железом.
| Инструмент | Вход | Что он может | Контекст | Кому подходит |
|---|---|---|---|---|
| Переделка SwiftUI / UIKit | Код вёрстки в репозитории | Убрать синглтон экрана, ветки ориентации и фиксированные размеры; отдать панели контейнеру навигации | Size class, safe area, зарезервированные области сгиба и камер | Приложения, которые выходят или обновляются около 23 октября |
| Тесты поз в Xcode 27.1 | Симулятор iPhone Duo в Device Hub | Закрыто, полусложено, открыто, каждое с одним поворотом; по желанию растяжение окна на macOS 27 | Letterbox, отступ статус-бара или вертикальные панели на весь экран, по уровню SDK | Командам, которым нужен лист регрессии, а не демо-ролик |
| Узел Mac | Машина, которая есть, покупка или аренда | Поставить Xcode на macOS, который его принимает, затем симуляторы и подпись | DerivedData, рантаймы симулятора, сертификаты | Нет свободного Apple Silicon, или повседневная машина не может отдать диск |
SwiftUI — не автоматическое освобождение. Human Interface Guidelines говорят: если вы уже используете стандартные системные компоненты и вёрстка меняет размер, позы следуют без отдельного дизайна на каждую. Compact по ширине на внешнем экране и regular на внутреннем — база для каждой позы. Фиксированные ширины, ветки по высоте устройства и панели, которые вы рисуете сами, не двигаются. Страница подготовки просит искать UIScreen.main, userInterfaceIdiom == .phone или .pad, любой путь, который считает regular-ширину признаком «это iPad», и сравнения вроде bounds.height == 844.
Одно измерение легко пропустить, и оно объясняет официальный запрет. Публичный зонд профиля симулятора Xcode 27.1 назвал внешний экран 466 на 678 точек, внутренний — 669 на 951 точку, оба при 3x, и увидел, что UIScreen.main.bounds продолжает сообщать внешние 466 на 678, пока приложение уже на внутреннем экране. Эти числа объясняют правило. Это не новая серия проверок == 466. В полусложенной позе центральная полоса становится активным перекрытием; тот же зонд оценил её примерно в 40 точек. Читайте ReservedRegion в своём Xcode. Не вставляйте константу из блога в приложение.
Не приклеивайте UIToolbar, UINavigationBar или UITabBar к виду сами. В SwiftUI добавьте toolbar к NavigationStack или NavigationSplitView. В UIKit задайте элементы панели контроллеру внутри navigation controller. После того как 27.1 ставит эти панели вертикально, своя панель всё ещё лежит поперёк контента. Сгиб и камеры — зарезервированные области: SwiftUI читает ReservedRegion из GeometryProxy. Когда нужна пара рядом или с наложением, используйте стили split и overlay у ArrangementView, а не второе дерево видов, которое появляется только когда булево «разложено» истинно.
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 в середине сгиба, а не кэшируется из UIScreen.main.bounds при запуске. Кнопка сохранения — системный элемент панели, чтобы SDK 27.1 мог поставить её под статус-бар. Полноэкранные картинки с fill обрежут сюжет на более широком внутреннем экране. Переключайте fill и fit по текущему size class или соотношению сторон, либо задайте точку фокуса.
Срок, матрица тестов и деньги на Mac
Настоящая разница в том, предполагает ли код до сих пор, что у телефона один экран, а не в том, хочет ли дизайн анимацию сгиба. Обе таблицы используют одни столбцы. Недели — оценки планирования, не коммерческие сметы. Число экранов и собственная отрисовка их сдвигают. Цены Mac — долларовые цифры со страницы тарифов этого сайта. Строка покупки — другая машина, поэтому это не точка безубыточности, пока к цифре не пристёгнуто это предложение.
| Инструмент | Вход | Что он может | Контекст | Кому подходит |
|---|---|---|---|---|
| SwiftUI уже адаптивный | Size class, системная навигация, нет UIScreen.main | Проверить вертикальные панели, области сгиба и фокус полноэкранных картинок | Закрывается за 3–7 рабочих дней | Небольшие приложения, которые уже пережили split view на iPad |
| Смесь SwiftUI и UIKit | Фиксированные фреймы и свои панели остаются | Заменить размер экрана и проверки ориентации; вернуть панели контейнерам | 2–4 недели плюс проход растяжения окна | Продукты на SwiftUI с углами на UIKit |
| UIKit фиксированного размера | Ветки по 393, 844 или списку устройств | Пересобрать контейнеры, несимметричные safe area, убрать проверки idiom | Список экранов на 4–8 недель | Магазины и утилиты, которые годами рисовали под одно стекло iPhone |
| Инструмент | Вход | Что он может | Контекст | Кому подходит |
|---|---|---|---|---|
| Apple Silicon Mac, который уже есть | Локальный Xcode | Каждая поза симулятора; USB, если есть устройство | Ноль добавленного железа, но DerivedData спорит с повседневным диском | Один проход адаптации, и машина уже запускает нужный Xcode |
| M4 16 ГБ посуточно | Удалённый рабочий стол | Один проход Device Hub | 20,2 доллара в день. Пять рабочих дней — 101 доллар | Адаптивная полоса, и вы правда заканчиваете к пятнице |
| M4 16 ГБ понедельно | Удалённый рабочий стол | Одна календарная неделя регрессии | 54,5 доллара в неделю. Две недели — 109 долларов | Вы не уверены, что пятница удержится |
| M4 16 ГБ или 24 ГБ в месяц | Удалённый рабочий стол | Машина регрессии на всю переделку; 24 ГБ держит больше симуляторов сразу | 100,9 или 200,9 доллара в месяц | Смешанный или фиксированный код, считанный неделями |
| Купить M6 Mac mini | Локальный актив | Ежедневный Xcode и CI после конца работы над Duo | Стартовая цена в США 899 долларов, образование 799. Анонс 25 августа 2026, поставки с 22 сентября | Общие машины, чьи релизы не остановятся после Duo |
Умножьте дневную ставку, и результат не тот, которого ждут. На 16 ГБ 20,2 умножить на 5 равно 101,0, и это уже равно месяцу в 100,9 доллара. 20,2 умножить на 7 равно 141,4, выше и недели, и месяца. Две недели по 54,5 — это 109,0, всё ещё чуть выше одного месяца. Строка 24 ГБ делает то же: 40,2 умножить на 5 равно 201,0 против месяца в 200,9 доллара. «Сначала попробовать по дням» разумно только когда проход закрывается за день или два. В ту минуту, когда скан навыка на второй день выдаёт список UIScreen.main, период оплаты должен стать месяцем. Платить дневную ставку до восьмого дня — это покупка выбора тарифа, а не дополнительных тестов.
Девять месяцев по 100,9 — это 908,1, численно близко к стартовой цене M6 Mac mini в США, 899 долларов. Это не одни и те же компьютеры. Аренда — M4 на 16 ГБ на удалённом узле. Покупка — начальная конфигурация M6, без дисплея, клавиатуры и налога. Девять месяцев — не точка безубыточности. Покупка выигрывает, когда этот Mac продолжает компилировать каждый день после конца адаптации, а не когда он простаивает, как только позы Duo сделаны. Более длинное обсуждение покупки и аренды, написанное для лабораторной работы, есть в тексте купить или арендовать для исследований. Нагрузка разработчика — в тексте подходит ли M6 Mac mini разработчикам.
Эта статья не переводит человеко-дни в доллары. Местные ставки различаются на порядок, и строка «переделка стоит от 8000 до 25000 долларов» превращает решение в чужую смету. В таблицу может войти строка Mac. На четырёхнедельной смешанной переделке месяц — 100,9 доллара. Если вместо этого купить 20 рабочих дней по дневной ставке, та же строка становится 404 долларами. Время инженерии остаётся большим числом. Машина — маленьким. Не покупайте телефон за 1999 долларов, чтобы избежать счёта за Mac в 100 долларов, и не покупайте Mac mini за 899 долларов ради пятидневного аудита.
Какой путь какой команде
| Если вы | выбираете | Почему |
|---|---|---|
| только на SwiftUI и уже нормально в split view iPad | Mac, который есть, или день аренды, и сначала навык | База есть. Остаются вертикальные панели, зарезервированные области и полноэкранные картинки |
| на второй день видите список UIScreen.main | сразу переходите на месяц | Пять рабочих дней по дневной ставке уже равны месяцу |
| ведёте магазин на UIKit с фиксированными ширинами | месяц на 24 ГБ и список экранов на 4–8 недель | Duo плюс остальные симуляторы сначала съедят 16 ГБ |
| хотите только обновить скриншоты App Store | сначала SDK 27.1, потом картинки | Внутренний экран старого SDK — это letterbox. Красивый кадр — другое устройство |
| уже держите CI на Xcode Cloud | Cloud оставляете для сборки; регрессию поз кладёте на удалённый Mac | Интерактивного Device Hub нет в журнале сборки |
| в офисе нет Mac | арендуете один и сначала читаете sw_vers и xcodebuild -version | День, когда Xcode не ставится, — не тестовый день |
| релизы продолжатся после Duo | сравниваете покупку M6 потом, не на первой неделе | 899 долларов покупают позднюю загрузку, а не этот проход поз |
Держите аппарат на отдельной строке. 1999 долларов — старт в США за 256 ГБ. 28 сентября MacRumors перечислил более высокие ступени в США: 2199, 2599 и 3199 долларов. Заказывайте со страницы Apple Store, которую вы действительно видите, и не переносите американские цифры на цену в Китае. Одного устройства хватает на ощущение шарнира и на пункты, которые заметка симулятора не воспроизводит. Duo на каждом столе не удаляет UIScreen.main.
Три связки
A — независимый разработчик, уже адаптивно: Xcode 27.1 на машине, которая есть, или один удалённый день. Запустите подсказку со страницы подготовки: «get my app ready for iPhone Duo». Навык ищет UIScreen.main, ориентацию и idiom. Если отчёт пуст, идите в Device Hub и сделайте закрыто, полусложено и открыто. Посмотрите кадры магазина в App Store Connect. Не покупайте M6 ради этого прохода.
B — небольшая команда, смешанный код: Первая неделя — скан и синглтон экрана. Возьмите неделю или сразу месяц. Не дайте дневной ставке дойти до седьмого дня. Вторая и третья недели возвращают панели системе и добавляют зарезервированные области. Четвёртая пишет матрицу поз в регрессию: один кадр каждого главного пути в каждой позе. CI остаётся на существующем сборщике. Сессия, где человек смотрит на шарнир, — один удалённый Mac, и DerivedData в конце стирается, чтобы тёплый кэш не считался прохождением. Месяц на 24 ГБ за 200,9 доллара — для команд, которым нужно держать Duo и остальные симуляторы вместе.
C — сборка нужна в неделю запуска: Сегодня 13 октября, предзаказы 16-го, магазины 23-го. Что можно обещать: главный путь на SDK 27.1 не в letterbox, вертикальные панели не закрывают главную кнопку, и полноэкранный сюжет всё ещё в кадре. Не пишите в текст магазина анимацию сгиба, которую вы не закончили. Месячные цены узлов — на тарифах Mac mini, заказ — на странице аренды. Вопросы системы и аккаунта идут в центр помощи. Не предполагайте, что образ аренды уже содержит Xcode 27.1.
Ошибки, которые видны в счёте
- Отдать SDK iOS 26 и назвать это готовым. Приложение запускается. Внутренний экран пуст вокруг окна. Покупатели не прочитают этот зазор как «адаптация в процессе».
- Чинить внешний экран через UIScreen.main. После раскладывания синглтон главного экрана может всё ещё сообщать внешний размер. Вы тогда верстаете область шириной 951 точку так, будто она 466 точек.
- Использовать ориентацию для портрета и альбома. Внутренний экран не соблюдает поддерживаемые ориентации. Берите соотношение сторон того окна, которое есть.
- Считать regular-ширину признаком только iPad. Внутренний экран Duo вытащит спрятанную iPad-вёрстку, включая плотность боковой панели, которой не место на телефоне.
- Платить дневную ставку целую неделю. Пять рабочих дней на 16 ГБ уже равны месяцу. Восьмой день платит за период тарифа, а не за дополнительные тесты.
- Вписывать 1999 долларов в каждый тикет или не закладывать устройство вовсе. Аппарат — одна строка приёмки шарнира. Это не цена единицы переделки. Симулятор остаётся путём вёрстки, который называет Apple.
Семь шагов
- Соберите те же исходники против каждого SDK, который можете поставить. Запишите letterbox, статус-бар на правом крае или вертикальные панели на весь экран. Цель — 27.1.
- Найдите
UIScreen.main,UIDevice.current.orientation,statusBarOrientation,interfaceOrientation,userInterfaceIdiomи константы высоты вроде 844, 852 и 932. - Попросите помощника кода в Xcode запустить App Resizability или экспортируйте навык командой
xcrun agent skills exportдругому агенту. Навык находит большую часть. Список выше ловит остальное. - Откройте iPhone Duo в Device Hub. Поверните закрытое, полусложенное и открытое. Оставьте по одному кадру на клетку главных путей.
- Проверьте, что панели стоят под статус-баром, что области сгиба и камеры не закрывают кнопки, и что полноэкранный сюжет ещё виден.
- Замените материалы App Store по спецификации скриншотов Duo и посмотрите их в App Store Connect. Не масштабируйте холст iPhone 18 в надежде.
- Выберите срок Mac. Один или два дня могут быть дневной ставкой. Грязный скан переводит вас на месяц. Сравнивайте старт M6 за 899 долларов только если машина будет компилировать каждый день потом. Перед заказом выполните на узле
sw_versиxcodebuild -version.
FAQ
Запустится ли неизменённое приложение на iPhone Duo?
Да. Сборка на SDK iOS 26 или старше в открытом виде сидит по центру с пустым полем, а в закрытом контент уходит влево от статус-бара и камеры. Запуск не равен адаптации. Полный экран и вертикальные панели требуют SDK iOS 27.1.
Обязателен ли SDK iOS 27.1?
Заполнить внутренний экран и поставить панели инструментов и вкладок вертикально под статус-баром требует 27.1. До выпуска подтвердите, что контент переживает эти панели. Новые скриншоты на бинарнике старого SDK всё ещё показывают letterbox.
Хватит ли симулятора?
Для пути вёрстки хватит. Apple называет симулятор iPhone Duo в Xcode 27.1 лучшим способом проверить полный нативный опыт, а Device Hub умеет открывать, закрывать, поворачивать и складывать. Ощущение шарнира требует железа. 1999 долларов — эта строка. Не размазывайте её по каждому тикету SwiftUI.
Можно ли сделать адаптацию без Mac?
Xcode 27.1 не работает в Windows. M4 на 16 ГБ стоит 20,2 доллара в день, и пять рабочих дней равны месяцу в 100,9 доллара. Подтвердите, что macOS узла ставит закреплённый Xcode. Системные требования остаются на странице требований Xcode у Apple. Страница подготовки относит тест растяжения iPhone Mirroring к macOS 27.
SwiftUI сам подстраивается под сгиб?
Системная навигация, size class и стандартные компоненты следуют позе. Фиксированные фреймы, свои панели, проверки ориентации и UIScreen.main — нет. Внутренний экран regular по ширине, поэтому раскладки, которые раньше значили iPad, появляются на этом телефоне.
Итог
iPhone Duo в магазинах 23 октября. Стоимость адаптации — не строка в 1999 долларов. Сначала прочитайте уровень SDK и UIScreen.main, затем поставьте в план три позы, и пусть «пять дневных ставок равны месяцу» выберет срок Mac. Небольшое адаптивное приложение использует машину, которая есть, или короткую аренду. Смешанный и фиксированный код держит месяц, чтобы регрессия выжила. Покупку M6 сравнивайте только если релизы не остановятся. Удалённые узлы — на странице аренды и странице цен. Аккаунты и версии системы идут через центр помощи.
Дальше
- Текст о дате выхода до анонса, когда имени ещё не было →
- Командный iOS CI/CD: Xcode Cloud против удалённого Mac →
- Подходит ли M6 Mac mini разработчикам? Xcode и локальная среда →
Регрессия поз требует Mac, чья система ставит нужный Xcode
Симулятор iPhone Duo живёт в Xcode, не в Windows. Удалённый Mac изолирует DerivedData на сессию. Закрыто, полусложено, открыто, затем среду стирают. До таймера проверьте macOS узла.