Вкладки в середине экрана

    Можно ли разместить вкладки (tabs) не в верхней части экрана, а, например, в середине? Стандартный TabView всегда располагает вкладки вверху, но в вашем случае над ними находится другой контент. К тому же есть требования к поведению контента вкладок:

    • Высота содержимого каждой вкладки должна рассчитываться автоматически, а не быть фиксированной.
    • При переключении между вкладками высота активного блока должна динамически меняться в зависимости от его содержимого.
    • Блоки, расположенные ниже вкладок, должны плотно прилегать к активному контенту (без пустот и разрывов).

    То есть стандартный TabView не подходит, так как он привязан к верхнему краю и не позволяет гибко управлять положением. Вы долго искали решение, но ничего подходящего не нашли. Ниже предлагаем возможные подходы.

    Возможные решения

    • Кастомная реализация на SwiftUI: Создайте собственный компонент вкладок, используя State для отслеживания активной вкладки и GeometryReader для динамического вычисления высоты на основе контента. Это даст полный контроль над расположением и анимацией.
    • Использование ScrollView и VStack: Разместите переключатели вкладок и контент внутри ScrollView с VStack. Контент каждой вкладки упаковывается в отдельный блок, который отображается или скрывается по условию, автоматически подстраивая высоту.
    • Библиотеки сторонних разработчиков: Существуют готовые решения (например, TabView с настраиваемыми модификаторами), но большинство из них не поддерживают размещение вкладок в произвольном месте без дополнительных обёрток.

    Рекомендуется первый вариант - кастомная реализация. Она обеспечит точное соответствие требованиям: вкладки будут находиться в нужном месте, а высота контента будет вычисляться автоматически, без лишних промежутков.