❓ Как безопасно «доделать» новые
SwiftUI API из iOS 27.1 для старых таргетов с помощью паттерна backport? Два подхода:
➡️ отдельный
namespaced тип Backport (через .backport) ➡️ расширение
View с пометками @available и префиксом portedОба варианта делают
availability проверку за вас - на новых платформах вызывается нативный modifier toolbarVerticalBehavior, на старых просто возвращается исходный view (или можно добавить собственную реализацию).👀 Код показывает реализацию
Backport<Content> и функцию toolbarVerticalBehavior, которая внутри использует if #available(anyAppleOS 27.1, *) и вызывает нативный modifier только при поддержке. Второй вариант помечен @available(iOS, introduced: 26.0, deprecated: 27.1, obsoleted: 28.0) - это полезно, потому что компилятор будет предупреждать вас, когда портируемая версия станет ненужной и её можно удалить.✔️ Это подходит для небольших
API, которые можно безопасно игнорировать на старых версиях или эмулировать простым поведением. Если поведение критично отличается на старых ОС, придётся реализовать совместимый код