Создайте полезную боковую панель для ваших пользователей

Сегодня я решил повозиться с представлением SwiftUI, которое позволяет мне легко создавать меню боковой панели для контента внутри моих приложений. После разработки нескольких прототипов я обобщил его в один настраиваемый класс представления с именем SideBarStack, как показано ниже:

Как видите, в настраиваемом представлении дважды используется оболочка свойств @ViewBuilder, чтобы вы могли передавать настраиваемое содержимое как для боковой панели, так и для фактического содержимого представления.

Пользовательский SideBarStack также принимает два параметра: sidebarWidth и showSidebar. Первый позволяет представлению правильно переводить как боковую панель, так и основной контент, когда боковая панель открывается и закрывается. Это так же просто, как установить смещение двух представлений в соответствии с переданной шириной.

Во-вторых, showSidebar bool определяет, открыта ли боковая панель. Он передается как @Binding, чтобы разрешить TapGesture быть помещенным в основное содержимое. Это позволяет пользователю коснуться основного содержимого, чтобы закрыть боковую панель, а не только кнопку меню. В коде это работает за счет применения почти полностью прозрачного наложения. SwiftUI не будет запускать жест касания в Color.clear представлении или представлении с прозрачностью 0.

Пример использования:

Спасибо за прочтение!