Home > Software design >  How to remove the cornerradius of sheets in swiftui?
How to remove the cornerradius of sheets in swiftui?

Time:09-21

Is there a way to remove the cornerRadius of a sheet? I tried it like this:

.sheet(isPresented: $showModal) {
     Modal().cornerRadius(0, corners: [.topLeft, .topRight])
}

but it didn't work.

I know I can just use fullScreenCover but I still want to know if there is a solution to this.

CodePudding user response:

It is not possible for now perhaps we can in further update, nonetheless you can create your own custom view

CodePudding user response:

According to my comment above you can create your own slide-in menu. In the example below I added a close button as well as gesture control to close the view.

//
//
//  SlideInMenu.swift
//  SlideInMenu
//
//  Created by Sebastian on 21.09.22.
//

import SwiftUI

var bounds = UIScreen.main.bounds

struct ContentView: View {
    
    @State var selectedItem: String = ""
    @State var showMenu = false
    
    var body: some View {
        ZStack() {
            MainView(selectedItem: $selectedItem, showMenu: $showMenu)
                .blur(radius: showMenu ? 3 : 0)
            SlideView(selectedItem: $selectedItem, showMenu: $showMenu)
        }
        .edgesIgnoringSafeArea(.all)
    }
}

struct MainView: View {
    
    @Binding var selectedItem: String
    @Binding var showMenu: Bool
    
    var body: some View {
        HStack(){
            Spacer()
            VStack() {
                Spacer()
                Text("This is your main View")
                    .foregroundColor(.white)
                    .padding()
                
                Button(action: {
                    withAnimation(.linear(duration: 0.2)) {
                        self.showMenu.toggle()
                    }
                }) {
                    Text("Show Menu")
                        .font(.system(size: 20, weight: .medium))
                        .foregroundColor(.white)
                }
                
                Spacer()
            }
            Spacer()
        }.background(Color.blue)
    }
}


struct SlideView: View {
    
    @Binding var selectedItem: String
    @Binding var showMenu: Bool
    
    @State private var viewOffest: CGFloat = 100
    @State private var offset = CGSize.zero
    @State private var isDragging = false
    
    var body: some View {
        
        let dragGesture = DragGesture()
                   .onChanged { value in offset = value.translation }
                   .onEnded { _ in
                       
                           withAnimation(.linear(duration: 0.2)) {
                           isDragging = false
                           if offset.height > (bounds.height - viewOffest)/3 {
                               showMenu.toggle()
                           }
                           offset = .zero
                       }
                   }
        
        ZStack() {
            Color.black
                .opacity(showMenu ? 0.5 : 0)
            
            VStack() {
                HStack() {
                    Spacer()
                    
                    Spacer()
                }
                VStack(alignment: .leading) {
                    HStack() {
                        Spacer()
                        Text("Here is the menu")
                            .font(.system(size: 20, weight: .medium))
                        Spacer()
                    }
                    
                    HStack() {
                        Spacer()
                        Button(action: {
                            withAnimation(.linear(duration: 0.2)) {
                                self.showMenu.toggle()
                            }
                        }) {
                            Text("Close Menu")
                                .font(.system(size: 20, weight: .medium))
                                .foregroundColor(.red)
                        }
                        .padding()
                        Spacer()
                    }
                    Spacer()
                }
                .padding()
                .background(Color.white)
                .cornerRadius(0)
            }
            .offset(y: showMenu ? viewOffest   offset.height : bounds.height)
            .gesture(dragGesture)
        }
    }
}
  • Related