SwiftUI基础学习日记(二)Button、TextField

236 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

不怕路远,就怕志短;不怕缓慢,就怕常站;不怕贫穷,就怕惰懒;不怕对手悍,就怕自己颤。

大家好,我是小黑,一个还没秃头的程序员~~~

今天记录的是swiftUI基础控件之Button与Altert,话不多说,正文开始:

(一)Button

属性/修饰符说明
label内部布局
action点击的事件
contextMenu长按按钮后出现的菜单弹框
alert点击将会弹出提示框
代码如下:
Button("按钮1"){

                self.isShowAlert=true

            }.alert(isPresented: self.$isShowAlert, content: {

                Alert(title: Text("你好"))

            })
VStack{

            Text("点击会弹出Alert").alert(isPresented: self.$isShowAlert, content: {

                Alert(title: Text("这是一个alert"))

            }).onTapGesture {

                isShowAlert=true

                isShowActionSheet=false

            }

            Text("").frame(height:20)

            Button(action: {isShowActionSheet=true}, label: {

                Text("弹出ActionSheet").actionSheet(isPresented: self.$isShowActionSheet, content: {

                    ActionSheet(title: Text("选择"), message: nil, buttons: [.default(Text("拍照")),.destructive(Text("删除")),.cancel(Text("取消"))])

                })

            })

        }.navigationTitle("Alert").navigationBarTitle("Alert")

        .navigationBarBackButtonHidden(true)

        .navigationBarItems(leading: Button(action: {

            self.presentationMode.wrappedValue.dismiss()

        }, label: {

            Text("返回")

        }))

        .navigationBarTitleDisplayMode(.inline)

(二)TextField、

  1. TextField:显示可编辑文本界面的控件
  2. SecureField:可以输入如密码类型的不可见的字符
  3. TextEditor:一个可以显示和编辑长文本的视图

下面是由上述控件组合成的一个简单的例子:效果如下:

image.png

VStack(){

            HStack{

                Text("用户名:")

                TextField("请输入用户名", text: self.$username) { (change) in

                    print(change)

                } onCommit: {

                    print(self.username)

                }.textFieldStyle(RoundedBorderTextFieldStyle())

            }.padding(.leading,10)

            .padding(.trailing,10)

            HStack{

                Text("密    码:")

                SecureField("请输入密码", text: self.$password).textFieldStyle(RoundedBorderTextFieldStyle())

            }

            .padding(.leading,10)

            .padding(.trailing,10)

            HStack(alignment: .top, spacing: 10){

                Text("反    馈:").padding(.top,10)

                TextEditor(text: self.$feedback)

                    .cornerRadius(10).overlay(

                        RoundedRectangle(cornerRadius: 10, style: .continuous)

                            .stroke(Color.gray, lineWidth: 1)

                    )

                    .frame(height: 100, alignment: .leading)

            .padding(EdgeInsets.init(top: 0, leading: 10, bottom: 0, trailing: 10))

            }.padding(.leading,10)

            VStack{

                Spacer().frame(height:20)

                Button(action: {self.showAlert=true}, label: {

                    Text("登录")

                        .padding(.leading,10)

                        .padding(.trailing,10)

                        .background(Color.blue)

                        .foregroundColor(.white).alert(isPresented: self.$showAlert, content: {

                        Alert(title: Text("用户名:\(self.username)\n密码:\(password)"))

                    })

                })

            }.padding(.leading)

            .padding(.trailing)

            .cornerRadius(10)

        }

        .navigationTitle("TextField").navigationBarTitle("TextField")

        .navigationBarBackButtonHidden(true)

        .navigationBarItems(leading: Button(action: {

            self.presentationMode.wrappedValue.dismiss()

        }, label: {

            Text("返回")

        }))

        .navigationBarTitleDisplayMode(.inline)
        
        
        
        HStack{

            Text("用户名 =  \(user.name!)")

            Spacer()

            Button.init("删除") {

                deleteCb(user)

            }

            .padding(EdgeInsets(top: 5, leading: 20, bottom: 5, trailing: 20))

            .background(Color.red)

            .cornerRadius(20)

        }

今天的swiftUI学习就到这里,刚开始接触学的慢,但是希望可以吸收进去,为了以后的实战做准备,后面我会持续输出iOS开发笔记,感谢大家的阅读!