SwiftUI 让 View 自动消失 [英] SwiftUI Let View disappear automatically

查看:47
本文介绍了SwiftUI 让 View 自动消失的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个由按钮触摸触发的视图.看起来不错,一切都很好.现在我希望视图在几秒钟后再次自动消失.

I have a view that is triggered by a button touch. It appears nicely, all good. Now I want the View to disappear automatically again after a few seconds.

视图应该会自动消失而无需再次点击按钮.

The view should disappear automatically without having to hit the button again.

在我的测试项目下面

import SwiftUI  

struct ContentView: View {  
  @State private var presentClipboardView = false  
  @State private var scale: CGFloat = 1.0  


  var body: some View {  
  VStack{  
  Button(action: {  
  let pasteboard = UIPasteboard()  
  pasteboard.string = "http://I_AM_A_URL.com"  

  withAnimation(.easeInOut(duration: 2)) {  
  self.presentClipboardView.toggle()  
  }  
  }, label: {  
  HStack {  
  Image(systemName: "list.dash")  
  .padding(.trailing)  
  VStack(alignment: .leading) {  
  Text("Open URL")  
  .font(.headline)  
  }  

  Spacer()  
  }  
  }  
  )  
  if(self.presentClipboardView){  
  LabelView()  
  }  
  }  

  }  
}  

struct ContentView_Previews: PreviewProvider {  
  static var previews: some View {  
  ContentView()  
  }  
}  

struct LabelView: View {  
  var body: some View {  
  Text("URL copied to clipboard!")  
  .padding(10)  
  .font(.title)  
  .foregroundColor(.white)  
  .background(RoundedRectangle(cornerRadius: 8).fill(Color.green).shadow(color: .gray, radius: 3))  
  }  
}  

推荐答案

在 LabelView() 上试试这个

Try this on LabelView()

LabelView().onAppear {
                        Timer.scheduledTimer(withTimeInterval: 3, repeats: false) { timer in
                            withAnimation(.easeInOut(duration: 2)) {
                                self.presentClipboardView.toggle()
                            }
                        }
                    }

这篇关于SwiftUI 让 View 自动消失的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆