Как представить .sheet () в полноэкранном режиме при нажатии кнопки, чтобы перейти на go к следующему виду в SwiftUI? - PullRequest
0 голосов
/ 11 июля 2020

У меня есть приложение, когда я нажимаю кнопку, чтобы открыть новое представление, оно показывает мое представление, потому что я использую .sheet (), есть ли способ сделать .sheet () полноэкранным, а не посередине? Я попробовал .present () .fullScreenCover () и все еще не работал должным образом. Может ли кто-нибудь помочь мне решить эту проблему. спасибо за помощь.

@State var showingDetail = false
           Button(action: {
                withAnimation {
                    self.showingDetail.toggle()
                }
                 
                
            }) {
                Text("Enter")
                    .font(.headline)
                    .foregroundColor(.white)
                    .padding()
                    .frame(width: 300, height: 50)
                    .background(Color.accentColor)
                    .cornerRadius(15.0)
                    .shadow(radius: 10.0, x: 20, y: 10)
            }.padding(.top, 50).sheet(isPresented: $showingDetail) {
                
                MainView()
            }
             

1 Ответ

0 голосов
/ 11 июля 2020

Вам просто нужно изменить порядок ваших модификаторов. Вот решение при условии, что оно будет работать в iOS 14 +

@State var showingDetail = false
           Button(action: {
                withAnimation {
                    self.showingDetail.toggle()
                }
                 
                
            }) {
                Text("Enter")
                    .font(.headline)
                    .foregroundColor(.white)
                    .padding()
                    .frame(width: 300, height: 50)
                    .background(Color.accentColor)
                    .cornerRadius(15.0)
                    .shadow(radius: 10.0, x: 20, y: 10)
            }.fullScreenCover(isPresented: $showingDetail) {
                
                MainView()
                  .edgesIngoringSafeArea(.all) // if you need to hide navigating and status bar
            }
             .padding(.top, 50)

Вот обходной подход для iOS 13.

 @State var showingDetail = false
 
             ZStack {

              if (!showingDetail) {
               Button(action: {
                    withAnimation {
                        self.showingDetail.toggle()
                    }
                     
                    
                }) {
                    Text("Enter")
                        .font(.headline)
                        .foregroundColor(.white)
                        .padding()
                        .frame(width: 300, height: 50)
                        .background(Color.accentColor)
                        .cornerRadius(15.0)
                        .shadow(radius: 10.0, x: 20, y: 10)
                }
                } else {
                  // in main view you need to give a button where value of showing detail changes to false
                  // so clicking on that button will poppet this view
                   MainView(back: $showingDetail) 
                  .edgesIngoringSafeArea(.all)
                  .transition(.move(.bottom))
                }

               }




           struct MainView: some View{
           @binding back: Bool
              var body ....
               .....
              .....
            }
...