Одно из главных достоинств SwiftUI — это скорость его развития. На каждой конференции WWDC представляются новые API, новые модификаторы и небольшие улучшения, повышающие удобство использования, благодаря которым код пользовательского интерфейса становится чище и выразительнее. Естественно, вам хочется начать их использовать.
А потом компилятор напоминает вам, что ваше приложение по-прежнему поддерживает старые версии iOS.
'sectionIndexLabel' is only available in iOS 26.0 or newer
На первый взгляд, это не кажется большой проблемой. Swift поддерживает проверки доступности уже много лет, поэтому обертывание нового кода в директиву
if #available кажется очевидным решением. К сожалению, SwiftUI не всегда так прост.Большинство представлений построены как длинные цепочки модификаторов, и вы не можете просто добавить проверку доступности в середину одного из них. Дублирование всего представления для разных версий iOS работает, но быстро становится сложным в поддержке по мере роста вашего UI.
Вместо этого цель должна заключаться в изоляции логики совместимости, сохраняя при этом само представление практически идентичным.
В этой статье мы рассмотрим несколько методов, которые значительно упрощают поддержку нескольких версий iOS без ущерба для читаемости.
Статья: https://apptractor.ru/info/articles/podderzhka-neskolkih-versiy-ios-v-swiftui-bez-prevrascheniya-vashih-predstavleniy-v-haos.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
