TGViewer
Мобильный трудоголик Мобильный трудоголик @hardworkerit · 1.65K subscribers
Post #455 933
🔢 horizontalSizeClass все еще актуален? От размера класса к доступному пространству.

На WWDC 26 компания Apple сделала важный шаг, который меняет подход к адаптивной верстке. Теперь приложения для iPhone можно запускать на Mac через iPhone Mirroring с изменяемым размером окна. А приложения для iPhone на iPad тоже получают возможность изменять размер окна. Это значит, что привычный horizontalSizeClass перестает быть основным критерием для определения ширины экрана.


Почему ваше приложение может выглядеть некрасиво:

Если протестировать свое приложение в этой новой среде, можно обнаружить, что оно ведет себя не так, как ожидалось. NavigationSplitView не переключается на многоколоночный режим. Вкладки не превращаются в боковую панель. А horizontalSizeClass остается .compact, даже когда окно становится шире.

На iPad в режиме pad horizontalSizeClass все еще меняется в зависимости от ширины окна. Но если запустить iPad в режиме совместимости только для iPhone, поведение становится таким же, как у iPhone-хоста в Device Hub.

Это не баг беты. Это осознанное решение Apple.


Новые правила:

В сессии «Modernize your UIKit app» Apple прямо говорит: приложения для iPhone попадают в среду с изменяемым размером. Разработчики должны адаптироваться к произвольным размерам сцены, а не рассчитывать на фиксированное соотношение сторон.

UIScreen.main и границы экрана больше не надежны. Вместо них нужно использовать эффективную геометрию оконной сцены или фактический доступный размер представления.

userInterfaceIdiom больше не подходит как основа для решений по компоновке. Приложение для iPhone на iPad или в зеркалировании на Mac может работать в контексте телефона, но это не означает узкий экран.

Ориентация тоже больше не надежна. В среде с изменяемым размером поддерживаемые ориентации становятся рекомендациями, а не жесткими правилами.


Надежен ли horizontalSizeClass:

Короткий ответ - да. Но он отражает обобщенные характеристики текущего окружения, а не фактическую ширину окна.

Широкое окно на iPhone не гарантирует .regular. Узкое окно на iPad может давать разные результаты в зависимости от контекста. Это одна из самых частых ошибок в этом году.

userInterfaceIdiom описывает только семантику хоста. horizontalSizeClass - контекстную оценку системы. А геометрия представления или сцены дает точную информацию для компоновки.


Эволюция Apple:

Если посмотреть на изменения последних лет, видна четкая тенденция. Apple последовательно уменьшает важность «типа устройства + ориентации» как основы для компоновки.

В 2014 году появились Size Class. В 2019 - UIScene и многоконность. В 2022 - десктоп-класс iPad. В 2023 - система trait, которая распространяется слоями. В 2024 - Tab Bar и Sidebar как разные представления одной иерархии. В 2026 - iPhone-приложения в изменяемом размере.

Вместе с этим полноэкранный режим на iPad постепенно переходит из «того, что требует разработчик» в «то, что определяется пользователем и системой».


🔗 Читать подробнее


💡 Вывод:

Эпоха фиксированного холста подходит к концу. horizontalSizeClass больше не дает точного ответа на вопрос, сколько места доступно. Геометрия представления и сцены становится основным инструментом для адаптивной верстки.

Пользователи теперь сами решают, как будет выглядеть приложение. Разработчикам нужно учитывать больше сценариев. Количество случаев, которые нужно обрабатывать, увеличилось. Но Apple дала инструменты, чтобы справляться с этим. Главное - перестать полагаться на старые подходы и начать строить интерфейсы вокруг доступного пространства.

И это нововведение - еще один намек на то, что складной iPhone уже не за горами. Apple последовательно готовит экосистему к устройствам с динамически меняющейся геометрией экрана. Разработчикам пора готовиться.


Подписаться на канал:
➡️ Telegram | Max
  • 👍 8
  • 🔥 2
  • ❤ 1
  • 🙏 1
More from @hardworkerit
  1. Sep 29, 2026🔢 Управление тулбарами на iPhone Duo. На iPhone Duo элементы управления навигацией, дейст…
  2. Sep 27, 2026🔢 Новые возможности Hashable в Swift 6.4 В Swift 6.4 добавили Hashable для нескольких тип…
  3. Sep 25, 2026🔢 Приватные свойства больше не ломают memberwise инициализатор в Swift 6.4 Swift автомати…
  4. Sep 24, 2026👨‍💻 Почему разработчики ненавидят своих менеджеров. Всем привет! Сегодня хочу разобрать…
  5. Sep 22, 2026🔢 Релиз Swift 6.4: главные изменения для разработчиков. Swift 6.4 вышел. Это обновление п…
  6. Sep 20, 2026📱 Официальный симулятор iPhone Duo уже доступен в Xcode 27.1 В бета-версии Xcode 27.1 поя…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →