关于SwiftUI的介绍,我们可以在苹果开发者官网上看到:
https://developer.apple.com/cn/xcode/swiftui/
我们先来看下今天需要达成的一个效果
1、从图中可以看出,页面整体分为两部分:列表页和详情页
2、从列表页可以跳转至详情页
3、详情页会有一个点击缩放的效果
总体看来还是非常简单的,对于SwiftUI初学者来说非常的容易上手。
第一节 项目创建
首先保证自己的Mac系统是10.15以上,以及Xcode版本在11以上
步骤1 创建新项目
步骤2 选择 App 项目,并选择 SwiftUI 进行开发
在以上步骤完成后,我们可以看到一个这样的页面展示在我们面前
左边是文件列表,中间是代码区域,右边是预览区域
SwiftUI可以做到“所见即所得”,再也不需要每次写完代码运行才能看到页面了
这个时候点击右边画布顶部的 Resume,就会出现代码的预览
如果没有看到右边画布,可以通过快捷键 option+command+回车 打开
画布就类似以前的Storyboard或者xib文件
第二节 自定义文本视图(Text View)
我们需要修改文本的内容、字体和颜色等属性,可以通过一下几种方式进行
方法1 直接在代码区域修改,在代码中添加相应代码
struct ContentView: View {
var body: some View {
Text("风景名胜")
// 内边距
.padding()
// 字体大小
.font(.largeTitle)
// 字体颜色
.foregroundColor(.black)
}
}
方法2 选中右边画布区域,按住 control+option 然后鼠标左键点击文本,可以看到 inspector (检查器),里面可以修改 Text View 的属性
另外一个方法可以直接弹出检查器,看图片下方蓝色区域,可以在选中文本后直接点击就会弹出所选视图的 inspector
我们在修改的过程中可以发现,所有两边都是同步更新的,主要一边修改后,两边都会同时出现修改后的内容
由于SwfitUI支持响应式编程,所以在熟练后直接使用写代码的方式,会更加的方便和好用
第三节 使用 Stack 组合多个视图
在刚才我们知道了如何去修改单个视图的属性,现在我们将多个视图组合起来看看效果。我们的目标是下面的样子
可以看到视图由左侧的图片和右侧的上下排列的文本组成
步骤1 我们首先来完成右侧文本的部分
这里需要引入一个新概念:Stack,它负责对控件进行排列组合
有 VStack 垂直排列,HStack 水平排列, ZStack 上下排列
我们这里使用到的 VStack,在代码中添加两个 TextView,在它们外面再添加一个VStack
struct ContentView: View {
var body: some View {
VStack {
Text("金字塔")
Text("埃及")
}
}
}
然后加入一个图片,使用HStack让它与文本进行水平排列
struct ContentView: View {
var body: some View {
HStack {
Image("埃及-金字塔-预览")
VStack {
Text("金字塔")
Text("埃及")
}
}
}
}
就这样几行代码,很快我们就完成了这样一个排列组合的效果,SwiftUI真的非常的简单好理解
相比Object-C的要通过繁琐的init创建空间和设置frame,SwiftUI的代码太简洁了!
当然这里我们也可以在画布区域通过拖拽控件的方式来完成,类似以前的xib操作,这里就不演示了,感兴趣的同学可以自己动手试一下。
最后我们添加一点点细节,这样我们的目标就完成了
struct ContentView: View {
var body: some View {
HStack {
Image("埃及-金字塔-预览")
VStack(alignment: .leading) {
Text("金字塔")
Text("埃及")
.font(.subheadline)
.foregroundColor(.secondary)
}
}
}
}
做到这里,我们对SwiftUI已经有一个简单的认识了
可以看到SwiftUI最大的特点就是简洁!
体验了SwiftUI后,我已经不想写OC的代码了,哈哈哈
可惜的是,SwiftUI目前最低只支持iOS 13。从目前市场上的APP最低iOS9、iOS10来看,SwiftUI的普及还没有这么快。但是这也给了我们开发者时间去学习和适配。
我们可以从项目中一个小页面中逐步添加SwiftUI的适配,逐渐做到整个项目替换。