diff --git a/Shared/Views/Tab/MainView.swift b/Shared/Views/Tab/MainView.swift index f1aaa2a..22a692d 100644 --- a/Shared/Views/Tab/MainView.swift +++ b/Shared/Views/Tab/MainView.swift @@ -92,13 +92,14 @@ struct MainView: View { let translation = gesture.translation.width - if isSideMenuPresented { - // При закрытии двигаем от 0 до -menuWidth - self.menuOffset = max(0, menuWidth + translation) - } else { - // При открытии двигаем от 0 до menuWidth - self.menuOffset = min(menuWidth, translation) - } + // Определяем базовое смещение в зависимости от того, открыто меню или нет + let baseOffset = isSideMenuPresented ? menuWidth : 0 + + // Новое смещение — это база плюс текущий свайп + let newOffset = baseOffset + translation + + // Жестко ограничиваем итоговое смещение между 0 и шириной меню + self.menuOffset = max(0, min(menuWidth, newOffset)) } .onEnded { gesture in if !isSideMenuPresented && gesture.startLocation.x > 60 { return } @@ -111,7 +112,7 @@ struct MainView: View { } else { isSideMenuPresented = false } - // Сбрасываем menuOffset, так как isSideMenuPresented теперь главный источник истины + // Устанавливаем финальное смещение после анимации self.menuOffset = isSideMenuPresented ? menuWidth : 0 } }