SwiftUI-Tutorial

SwiftUI

SwiftUI

SwiftUI 作为 WWDC19 发布的重磅猛料,显然是一个未来化的框架。其最大的特点就是采用声明式语法。SWiftUI 轻松就能声明(Declare)用户(user interface) 和行为(behavior),并且它们可以轻松跨设备使用。

Declare the user interface and behavior for your app on every platform.

0. Overview

  1. SwiftUI 为你所声明的 UI 提供视图,控制,和布局结构;

  2. 并且为传递的响应(delivering taps),手势,和其他类型的输入提供 事件处理器(event handlers);

  3. 同时,可以管理 ModelView的数据流(flow of data),控制用户所见和交互;

  4. SwiftUI 中可以创建自定义view ,需要遵从 View protocol

  5. 在 Xcode 中高度集成了便捷的操作,可以直接在可视状下,使得每一个每一个 view 可以方便的修饰和设置,Xcode 提供一个实时的反馈,这个确实极大提高效率。

  6. 在不同的 app 和 设备共享View代码,SwiftUI 控制适应着视图的上下文和外观,实现轻松的跨(跨 iOS)平台;

  7. 当然可以混编 SwiftUI 和 UIKit,WatchKit ,AppKit 相关框架从而取使用一些更高应用级别的框架具体功能。

  8. 极简的实现 Dark Model 切换 ,多语言,多地区切换。

1. Go SwiftUI

1.1 helloWorld with SwiftUI

创建一个 默认 SwiftUI 文件 如下:

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Hello World")
    }
}

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

此刻右侧 canvas 区域 会出现 预览 “Preview”

SwiftUI-Tutorial_第1张图片
Hello World

代码中主要有两个部分:

ContentView : View

ContentView_Preview : PreviewProvider

PreviewProvider 负责提供 SwiftUI 的预览功能的。
当然你也可以一开始就注释掉它,拒绝SwiftUI带给你的最大优势,所写立即所 ️。

但我十分不建议你这样做

修改 View 中的内容,swiftUI 对于修饰view是 链式编程。

struct ContentView: View {
    var body: some View {
        Text("Hello Tim Cook!")
            .font(.title)
            .bold()
            .foregroundColor(Color.primary) // .primary 是自动匹配 Dark Model 
    }
}

还有另外几种方便的设置方式

  • command + click -> Inspector
  • Add + moving

1.2 ”容器“ Stack

你可以尝试在一个view的body中直接添加一个view,这会直接语法错误。

var body: some View {
        Text("Hello Tim !")
        Text("Hello Cook!")
    }
Function declares an opaque return type, but has no return statements in its body from which to infer an underlying type

因为SwiftUI是声明形语法,而对于两个Text,不能推测约束出一个唯一的布局。这里利用 stack 去帮助构造清晰的布局声明。

VStack {
    //...
    //垂直布局
}

HStack{
    //...
    //水平布局
}

List{
    //...
    //表布局
}

尝试写一个例子

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

如果你有过 CSS 的基础,那么 alignment ,padding 这些词你不会陌生。


未完待续

你可能感兴趣的:(SwiftUI-Tutorial)