Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import SwiftUI
- struct SideMenuView: View {
- @Binding var isMenuOpen: Bool
- var appVersion: String {
- if let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
- return version
- }
- return "Desconocido"
- }
- var body: some View {
- NavigationView {
- VStack(alignment: .leading, spacing: 25) {
- Spacer().frame(height: 120)
- MenuItem(icon: "house.fill", label: "Home", color: .blue, destination: RegisterView())
- MenuItem(icon: "person.fill", label: "Mi cuenta", color: .green, destination: Text("Página de mi cuenta"))
- MenuItem(icon: "info.circle.fill", label: "Ayuda", color: .orange, destination: Text("Página de ayuda"))
- Spacer()
- Text("Versión \(appVersion)")
- .font(.headline)
- .foregroundColor(.white)
- .frame(maxWidth: .infinity, alignment: .center)
- .padding(.bottom, 20)
- }
- .padding(.leading, 25)
- .frame(maxWidth: UIScreen.main.bounds.width * 0.65)
- .background(Color.black.opacity(0.5).blur(radius: 8))
- .overlay(LinearGradient(gradient: Gradient(colors: [Color.blue.opacity(0.3), Color.purple.opacity(0.3)]), startPoint: .top, endPoint: .bottom))
- .zIndex(1)
- .offset(x: isMenuOpen ? 0 : -(UIScreen.main.bounds.width * 0.65))
- .animation(.spring(response: 0.7, dampingFraction: 1.2, blendDuration: 0.5), value: isMenuOpen)
- .edgesIgnoringSafeArea(.all)
- }
- }
- struct MenuItem<Destination: View>: View {
- var icon: String
- var label: String
- var color: Color
- var destination: Destination
- var body: some View {
- NavigationLink(destination: destination) {
- HStack(spacing: 25) {
- Image(systemName: icon)
- .font(.largeTitle)
- .foregroundColor(color)
- Text(label)
- .font(.title)
- .fontWeight(.semibold)
- .foregroundColor(.white)
- }
- }
- .padding(.horizontal, 20)
- .background(RoundedRectangle(cornerRadius: 10).fill(Color.black.opacity(0.2)))
- }
- }
- }
- struct SideMenuView_Previews: PreviewProvider {
- static var previews: some View {
- SideMenuView(isMenuOpen: .constant(true))
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment