swiftui自定义弹窗,弹出指定消息。

swiftui自定义弹窗,弹出指定消息。
也可以理解为页面的跳转。
再次点击弹窗中的内容时候消失弹窗的内容。
在这里插入图片描述
在这里插入图片描述

body部分代码如下。

struct ContentView : View {
    
    
    var body: some View {
        
        
        
        return ZStack{
            
            
            //自定义窗口弹窗
            Button("Show自定义窗口") {
                //                self.showingPayModel = true
                self.isPositionOut()
                
            }
            if $showingPayModel.wrappedValue{
                ZStack{
                    
                    
                    Color(.blue).edgesIgnoringSafeArea(.all)
                    
                    VStack(spacing:0.5){
                        //水平显示时间与费用
                        HStack{
                            
                            HStack{
                                Image(systemName: "alarm")
                                Text("停车时间:51分")
                                
                            }//HStack
                                .padding(5)
                            
                            HStack{
                                Image(systemName: "dollarsign.circle")
                                Text("停车费用5元")
                            }//HStack
                                .padding(5)
                            
                            
                            
                        }//HStack
                            //                            .offset(y:-130)
                            .font(Font.system(size:16, design: .default))
                        
                        
                        
                        //设置黑色的下划线
                        HStack{
                            Capsule().fill(Color.black)
                                .frame(width:262,height: 1.6)
                            
                        }
                        
                        //收费规则显示
                        VStack(alignment: .leading){
                            Text("收费标准:5元/1小时,15分钟内免费,不足1小时按1小时计费,每24小时封顶80元,总封顶299元。")
                            
                        }//VStack rules
                            .padding(10)
                            .font(Font.system(size:14, design: .default))
                        
                        //水平显示取消按钮与 支付按钮
                        HStack{
                            Button("取消"){
                                
                                self.showingPayModel = false
                                
                            }
                            .foregroundColor(.red)
                            .accentColor(.red)
                                
                            .frame(minWidth: 110, idealWidth: 110, maxWidth: 110,
                                   minHeight: 40,idealHeight: 40,maxHeight: 40,
                                   alignment: .center)
                                //                                .background(Color.purple)
                                .cornerRadius(10)
                                .overlay(
                                    RoundedRectangle(cornerRadius: 28.0/2, style: .continuous)
                                        .stroke(Color(.gray), lineWidth: 0.5)
                            )
                                .padding(10)
                            
                            
                            
                            
                            
                            
                            Spacer()
                            
                            Button("支付"){
                                
                                self.showingPayModel = false
                                
                            }
                            .frame(minWidth: 110, idealWidth: 110, maxWidth: 110,
                                   minHeight: 40,idealHeight: 40,maxHeight: 40,
                                   alignment: .center)
                                //                                .background(Color.purple)
                                .cornerRadius(10)
                                .overlay(
                                    RoundedRectangle(cornerRadius: 28.0/2, style: .continuous)
                                        .stroke(Color(.gray), lineWidth: 0.5)
                            )
                                .padding(10)
                            
                            
                            
                            
                        }//HStack /button -> /submit /cancel
                            .padding(5)
                        //                            .background(Color.orange)
                        
                    }//VStack
                        .frame(minWidth: 280, idealWidth: 280, maxWidth: 320,
                               minHeight: 160,idealHeight: 160,maxHeight: 200,
                               alignment: .center)
                        .background(Color.white)
                        .cornerRadius(20)
                        .shadow(color: Color.gray, radius: 6, x: 0, y: 0)
                    
                }//ZStack
                
            }
            
            
        }//ZStack
        
        
        
        
        
        
        
        
        
    }//bodyView
    
    
    //定义相机位置的参数
    @State private var positionOfCamera = "1.203242"
    
    //定义是否显示收费弹窗
    @State private var showingPayModel = false
    
    
    //    定义入口处检测函数
    func isPositionOut(){
        if positionOfCamera == "1.203242" {
            showingPayModel = true
        }
    }
    
    
    
    
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SwiftUI提供了多种方法来实现自定义布局。其中,可以使用HStack、VStack、ZStack等布局容器来组合和排列视图元素,实现各种复杂界面。 另外,SwiftUI还提供了对齐指南来帮助文本对齐,如.leading、.trailing、.top等。但是当处理在不同视图之间分割的视图时,如果需要使完全不同的两个视图部分对齐,可以使用自定义的对齐辅助线。使用这些辅助线可以在整个界面中创建和使用辅助线,在视图之前或之后发生的变化并不重要,它们仍然会按照一条线排列。 例如,可以使用offset(x: CGFloat, y: CGFloat)方法为视图指定水平和垂直的偏移距离。这个方法可以将视图在水平和垂直方向上移动指定的距离。 综上所述,使用SwiftUI可以通过布局容器和对齐指南实现自定义布局,同时也可以使用偏移方法来调整视图的位置。这些功能可以帮助您创建个性化的布局。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SwiftUI 布局之自定义手动布局设置各种相对位置(教程含源码)](https://blog.csdn.net/iCloudEnd/article/details/107718464)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [SwiftUI之深入解析布局如何自定义AlignmentGuides](https://blog.csdn.net/Forever_wj/article/details/121958698)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值