SwiftUI 官方教程(三)

摘要:
在创建SwiftUIview时,我们可以在视图的body属性中描述其内容、布局和行为。SwiftUI教程3.4将位置视图的字体设置为.subheadline。ContentView.swiftimportSwiftUIstructContentView:View{varbody:someView{VStack{Text.fontText.font}}}structContentView _ Preview:PreviewProvider{static varpreviews:someView()}SwiftUI Tutorial 3.5编辑VStack的初始化方法并以前导模式对齐视图。ContentView.swiftimportSwiftUIstructContentView:View{varbody:someView{VStack{Text.fontHStack}Text.fontText.font}}}}structContentView _ Preview:PreviewProvider{staticvarpreview:someView{ContentView()}}SwiftUI教程3.8在水平堆栈中添加一个分隔符以拆分和修复约书亚树国家公园和加利福尼亚州,以便它们共享整个屏幕宽度。Spacer可以扩展它包含的视图,使它们共享其父视图的所有空间,而不是仅通过其内容定义其大小。

3. 用 Stacks 组合 View

在上一节创建标题 view 后,我们来添加 text view,它用来显示地标的详细信息,比如公园的名称和所在的州。

在创建 SwiftUI view 时,我们可以在 view 的 body 属性中描述其内容、布局和行为。由于 body属性仅返回单个 view,所以我们可以使用 Stacks 来组合和嵌入多个 view,让它们以水平、垂直或从后到前的顺序组合在一起。

在本节中,我们使用水平的 stack 来显示公园的详细信息,再用垂直的 stack 将标题放在详细信息的上面。

SwiftUI 官方教程(三)第1张

我们可以使用 Xcode 的编辑功能将 view 嵌入到一个容器里,也可以使用 inspector 或者 help 找到更多帮助。

3.1 按住 Command 并单击 text view 的初始化方法,在编辑窗口中选择 Embed in VStack 。

SwiftUI 官方教程(三)第2张

接下来,我们从 Library 中拖一个 Text view 添加到 stack 中。

3.2 单击 Xco​​de 右上角的加号按钮 (+) 打开 Library ,然后拖一个 Text view ,放在代码中 Turtle Rock 的后面。

SwiftUI 官方教程(三)第3张

3.3 将 Placeholder 改成 Joshua Tree National Park 。

ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Turtle Rock")
                .font(.title)
            Text("Joshua Tree National Park")
        }
    }
}

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

SwiftUI 官方教程(三)第4张

调整地点 view 以满足布局需求。

SwiftUI教程

3.4 将地点 view 的 font 设置成 .subheadline 。

ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Turtle Rock")
                .font(.title)
            Text("Joshua Tree National Park")
                .font(.subheadline)
        }
    }
}

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

SwiftUI 官方教程(三)第5张

SwiftUI 官方教程(三)第6张

 SwiftUI教程

3.5 编辑 VStack 的初始化方法,将 view 以 leading 方式对齐。

默认情况下, stacks 会将内容沿其轴居中,并设置适合上下文的间距。

ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(alignment: .leading) {
            Text("Turtle Rock")
                .font(.title)
            Text("Joshua Tree National Park")
                .font(.subheadline)3
        }
    }
}

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

SwiftUI 官方教程(三)第7张

接下来,我们在地点的右侧添加另一个 text view 来显示公园所在的州。

3.6 在 canvas 中按住 Command ,单击 Joshua Tree National Park ,然后选择 Embed in HStack 。

SwiftUI 官方教程(三)第8张

3.7 在地点后新加一个 text view,将 Placeholder 修改成 California ,然后将 font 设置成 .subheadline 。

ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(alignment: .leading) {
            Text("Turtle Rock")
                .font(.title)
            HStack {
                Text("Joshua Tree National Park")
                    .font(.subheadline)
                Text("California")
                    .font(.subheadline)
            }
        }
    }
}

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

SwiftUI 官方教程(三)第9张

SwiftUI教程

3.8 在水平 stack 中添加一个 Spacer 来分割及固定 Joshua Tree National Park 和 California ,这样它们就会共享整个屏幕宽度。

spacer 能展开它包含的 view ,使它们共用其父 view 的所有空间,而不是仅通过其内容定义其大小。

ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(alignment: .leading) {
            Text("Turtle Rock")
                .font(.title)
            HStack {
                Text("Joshua Tree National Park")
                    .font(.subheadline)
                Spacer()
                Text("California")
                    .font(.subheadline)
            }
        }
    }
}

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

SwiftUI 官方教程(三)第10张

3.9 最后,用 .padding() 这个修饰方法给地标的名称和信息留出一些空间。

ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(alignment: .leading) {
            Text("Turtle Rock")
                .font(.title)
            HStack {
                Text("Joshua Tree National Park")
                    .font(.subheadline)
                Spacer()
                Text("California")
                    .font(.subheadline)
            }
        }
        .padding()
    }
}

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

SwiftUI 官方教程(三)第11张

SwiftUI 官方教程(三)第12张

SwiftUI 官方教程(四)

SwiftUI 官方教程(二)

免责声明:文章转载自《SwiftUI 官方教程(三)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Builder生成器(创建型模式)小程序支付下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

iTerm2 配色方案(转)

ITerm2配色方案(噢,我的zsh&Powerline)item2.png转到官方网站下载ITerm2,并以全黑色背景打开它。屏幕截图2017-08-01下午5.45.28点。Pngsolarized可以说是目前网络上最流行的配色方案,我个人认为比较这种配色更好。第一种方法:打开iTerm2首选项、配置文件/颜色,然后直接选择Solariz...

koroFileHeader插件快速入门使用教程

插件下载插件可以直接在vscode的扩展中查找koroFileHeader,但是有时候由于网络的问题会查找不到软件。插件配置koroFileHeader支持许多功能,但是不是所有功能都是需要,我们关注往往是如何配置注释内容和注释的一些选项。"fileheader.cursorMode":{//这部分是函数头的配置},"fileheader.customMad...

Gidot TypeSetter (排版助手) 3.1.1.2

我们来看看:打开排版助手,可以看到常用的排版功能按钮排列在五个菜单选项下。图2如果您需要更高级的排版,也可以在界面右上角的“typesetting Widget”中进行设置。例如,如果您选择“网页”功能按钮来导入带有HTML代码的文本,您也可以从排版小部件中删除HTML代码功能。...

将HTML文件转换为MD文件

html格式转md格式#模块html2textpipinstallhtml2text/pip3installhtml2text测试:importhtml2textashttext_maker=ht.HTML2Text()#读取html格式文件withopen('./*.html','r',encoding='UTF-8')asf:htmlpage=f.rea...

Vue之项目搭建

常用命令:npminstall-g包名#安装模块-g表示全局安装,如果没有-g,则表示在当前项目安装npmlist#查看当前目录下已安装的node包npmview包名engines#查看包所依赖的Node的版本npmoutdated#检查包是否已经过时,命令会列出所有已过时的包npmupdate包名#更新node包npmuninstall包名#卸载node包...

光学镜头参数详解(EFL、TTL、BFL、FFL、FBL/FFL、FOV、F/NO、RI、MTF、TVLine、Flare/Ghost)

详细解释光学镜头参数(EFL、TTL、BFL、FFL、FBL/FFL、FOV、F/NO、RI、MTF、TV Line、Flare/Ghost)-一杯清酒邀请月亮-博客公园的关键声明(cnblogs.com)。从光学系统中透镜的最后一侧到图像平面的距离。4.FFL(FrontFocalLength)光学前焦点定义:...