SwiftUI基础学习日记(三)Menu、NavgationLink

718 阅读2分钟

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

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

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

今天记录的是swiftUI基础控件中的Menu、NavgationLink,话不多说,正文开始:

(一)Menu

Menu是一种用于显示操作菜单的控件。

属性/修饰器说明
label菜单的入口
Content菜单列表

下面的示例展示了一个包含三个按钮的菜单和一个子菜单,子菜单包含自己的三个按钮。

Menu("Actions") { Button("Duplicate", action: duplicate)
                Button("Rename", action: rename)
                Button("Delete…", action: delete)
                Menu("Copy") { Button("Copy", action: copy) 
                                Button("Copy Formatted", action: copyFormatted) 
                                Button("Copy Library Path", action: copyPath) }}

contextMenu

contextMenu会在对控件进行长按时弹出菜单操作

属性/修饰器说明
menuItems多个菜单项

代码如下:

Text("长按").contextMenu( ContextMenu(menuItems: {

            Button(action: {}, label: {

                Text("扫一扫")

                Image(systemName: "plus")

            })

            Button("扫一扫"){
            }

            Button("扫一扫"){
            }

            Menu("-"){

                Button("删除"){
                }

            }

        }))

自定义含有菜单按钮的标题栏

使用toolbar修饰符添加Menu控件,代码如下:

NavigationView{

            VStack{}.toolbar(content: {

                Menu("menu2"){

                    Button(action: {}, label: {

                        Text("Button")

                        Image(systemName: "plus")

                    })

                }

                

            })

        }

修改Menu控件的样式

使用menuStyle修饰符来改变视图中所有菜单的样式。下面的例子展示了如何应用自定义样式:

Menu("Editing") { 
Button("Set In Point", action: setInPoint)
Button("Set Out Point", action: setOutPoint)}
.menuStyle(EditingControlsMenuStyle())

(二) NavigationLink

NavigationLink是控制导航表示的视图。通常用于页面的跳转

属性/修饰器说明
label跳转的标志
destination跳转到的view

代码如下: struct item :View {

    var text:String=""

    var destinationPage:AnyView;

    var body: some View{

        NavigationLink(

            destination: self.destinationPage,

            label: {

                HStack{

                    Spacer()

                    Text(self.text)

                    Spacer()

                }

                .frame(width:200,height: 50, alignment: .center)

                .border(Color.white,width: 1)

                .cornerRadius(25).shadow(color:Color.yellow,radius: 10)

            })

    }

item(text: "Alert", destinationPage: AnyView(AlertComponent()))

}

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