IOS 15 实现Toast和小菊花Loading提示
在iOS 15中,您可以使用Toast
和ActivityIndicator
来显示消息和加载状态。以下是如何使用SwiftUI实现这些功能的示例代码:
import SwiftUI
// Toast视图
struct ToastView: View {
@Binding var isShowing: Bool
var text: String
var body: some View {
VStack(spacing: 16) {
Text(text)
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(8)
}
.opacity(isShowing ? 1 : 0)
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
withAnimation {
isShowing = false
}
}
}
}
}
// Loading视图
struct LoadingView: View {
@Binding var isShowing: Bool
var body: some View {
VStack {
ActivityIndicator()
.padding()
}
.opacity(isShowing ? 1 : 0)
}
}
// 示例使用
struct ContentView: View {
@State private var isToastVisible = false
@State private var isLoading = false
var body: some View {
Button("显示Toast") {
isToastVisible = true
}
.toast(isPresenting: $isToastVisible, dismissAfter: 2) {
ToastView(isShowing: $isToastVisible, text: "操作成功")
}
Button("显示Loading") {
isLoading = true
}
.overlay(
isLoading ? LoadingView(isShowing: $isLoading) : nil
)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
在这个示例中,我们定义了ToastView
和LoadingView
两个视图,分别用于显示Toast消息和加载动画。在ContentView
中,我们使用了.toast()
和.overlay
修饰符来控制Toast和Loading的显示。通过isPresenting
和isShowing
状态,我们可以控制Toast和Loading的出现和消失。
请注意,这里的Toast和Loading都是简化版本,您可以根据需要添加更多样式和动画效果。
评论已关闭