iPhone Duo · Стоимость

Стоимость адаптации приложения под складной iPhone в 2026: SwiftUI, тесты Xcode и цена Mac

2026.10.13 · около 14 мин

Не оценивайте стоимость адаптации по цене iPhone Duo в 1999 долларов. Счёт делится на три слоя: переделка SwiftUI, тесты поз в Xcode 27.1, покупка или аренда Mac. Одни и те же столбцы сравнивают три типа кода.

Разработчик держит телефон и правит код на ноутбуке: так сравнивают позы сгиба и Xcode на Mac

В августе 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 — это покупка или аренда.

3 слоя
Код · позы · Mac
23.10
Первая волна
$100.9
M4 16 ГБ в месяц; пять дней уже равны

Почему цена аппарата — неверная оценка

Старый способ и новый расходятся в конкретной точке. Старый способ — «купить складной и прибавить две человеко-недели». 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 27Letterbox, отступ статус-бара или вертикальные панели на весь экран, по уровню 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 Hub20,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 iPadMac, который есть, или день аренды, и сначала навыкБаза есть. Остаются вертикальные панели, зарезервированные области и полноэкранные картинки
на второй день видите список UIScreen.mainсразу переходите на месяцПять рабочих дней по дневной ставке уже равны месяцу
ведёте магазин на UIKit с фиксированными ширинамимесяц на 24 ГБ и список экранов на 4–8 недельDuo плюс остальные симуляторы сначала съедят 16 ГБ
хотите только обновить скриншоты App Storeсначала SDK 27.1, потом картинкиВнутренний экран старого SDK — это letterbox. Красивый кадр — другое устройство
уже держите CI на Xcode CloudCloud оставляете для сборки; регрессию поз кладёте на удалённый 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.

Ошибки, которые видны в счёте

  1. Отдать SDK iOS 26 и назвать это готовым. Приложение запускается. Внутренний экран пуст вокруг окна. Покупатели не прочитают этот зазор как «адаптация в процессе».
  2. Чинить внешний экран через UIScreen.main. После раскладывания синглтон главного экрана может всё ещё сообщать внешний размер. Вы тогда верстаете область шириной 951 точку так, будто она 466 точек.
  3. Использовать ориентацию для портрета и альбома. Внутренний экран не соблюдает поддерживаемые ориентации. Берите соотношение сторон того окна, которое есть.
  4. Считать regular-ширину признаком только iPad. Внутренний экран Duo вытащит спрятанную iPad-вёрстку, включая плотность боковой панели, которой не место на телефоне.
  5. Платить дневную ставку целую неделю. Пять рабочих дней на 16 ГБ уже равны месяцу. Восьмой день платит за период тарифа, а не за дополнительные тесты.
  6. Вписывать 1999 долларов в каждый тикет или не закладывать устройство вовсе. Аппарат — одна строка приёмки шарнира. Это не цена единицы переделки. Симулятор остаётся путём вёрстки, который называет Apple.

Семь шагов

  1. Соберите те же исходники против каждого SDK, который можете поставить. Запишите letterbox, статус-бар на правом крае или вертикальные панели на весь экран. Цель — 27.1.
  2. Найдите UIScreen.main, UIDevice.current.orientation, statusBarOrientation, interfaceOrientation, userInterfaceIdiom и константы высоты вроде 844, 852 и 932.
  3. Попросите помощника кода в Xcode запустить App Resizability или экспортируйте навык командой xcrun agent skills export другому агенту. Навык находит большую часть. Список выше ловит остальное.
  4. Откройте iPhone Duo в Device Hub. Поверните закрытое, полусложенное и открытое. Оставьте по одному кадру на клетку главных путей.
  5. Проверьте, что панели стоят под статус-баром, что области сгиба и камеры не закрывают кнопки, и что полноэкранный сюжет ещё виден.
  6. Замените материалы App Store по спецификации скриншотов Duo и посмотрите их в App Store Connect. Не масштабируйте холст iPhone 18 в надежде.
  7. Выберите срок 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 сравнивайте только если релизы не остановятся. Удалённые узлы — на странице аренды и странице цен. Аккаунты и версии системы идут через центр помощи.

Дальше

Регрессия поз требует Mac, чья система ставит нужный Xcode

Симулятор iPhone Duo живёт в Xcode, не в Windows. Удалённый Mac изолирует DerivedData на сессию. Закрыто, полусложено, открыто, затем среду стирают. До таймера проверьте macOS узла.

Заказать · Смотреть цены

iPhone Duo · Стоимость

Регрессия поз требует Mac, чья система ставит нужный Xcode

Cloud Mac · Xcode 27.1 · iPhone Duo

Заказать
Mac Заказать