swift UI 学习 (一)

swift UI 学习

    • Swift UI 简介
        • SwiftUI 的特点是什么
          • 1. 声明式语法
          • 2. 拥有更直观的新设计工具
          • 3. 为所有的苹果设备提供原生体验
        • SwiftUI 代码实例

Swift UI 简介

苹果开发者大会 WWDC 2019 在北京时间今天凌晨开幕。在这场大会上除了「史上最难看 Mac 主机」、首次出现的iPadOS以外,我们还终于可以对饱受诟病的iTunes说再见了。而对于开发者来说,新发布的 SwiftUI 可能是最吸引人的特性,在 苹果公司软件工程高级副总裁Craig Federighi的演示中,我们可以轻松地把一百行的前端代码缩减到十几行。

学习网址:

官方swiftUI 学习

苹果官方swift 源码教程

GitHub Package 论坛

SwiftUI 的特点是什么

SwiftUI 使用声明式语法,所以我们可以简单地声明用户界面的样式。

  • 开发者可以声明需要由一串文本输入框构成的组件
  • 然后定义每一个输入框的字体对齐方式、字体样式、字体颜色。
  • 这些代码比以往更加易懂,省时并易于维护。

这种声明式的方式甚至允许使用复杂的功能,如动画(animation)。只需要几行代码,即可添加动画在任何控件上,并且可以使用易于调用的特效。在运行时,SwifthUI 会自行控制创建流畅动作的所有步骤,并且可以解决程序冲突,保证 app 稳定运行。动画特效变得如此容易,我们可以发掘使 app 更加灵动的方式。

1. 声明式语法

SwiftUI 使用了声明式语法,所以开发者能够十分轻易地描述用户界面应该做什么。例如,编写需要包含文本字段的项目列表时,开发者可以用代码描述每个字段的对齐方式、字体和颜色。代码也比以前更简单,更易于阅读。

swift UI 学习 (一)_第1张图片

这种声明式风格非常适用于像动画这样复杂的元素。通过 SwiftUI,开发者可轻松地将动画添加到几乎任何控件。

2. 拥有更直观的新设计工具

Xcode 11 包含更直观的新设计工具,可让开发者通过拖拽的方式使用 SwiftUI 构建界面,在这过程中可以直接设置控件的相关属性。

当在设计工具中工作时,所编辑的内容会立刻反映到代码上,如果从模拟器切换到手机,手机也能立马看到预览效果。

swift UI 学习 (一)_第2张图片

3. 为所有的苹果设备提供原生体验

SwiftUI 是真正的原生 UI 框架,建立在苹果数十年打磨用户界面的经验上。开发者通过少量代码和交互式设计就能使用这个框架。

swift UI 学习 (一)_第3张图片

SwiftUI 代码实例

  1. 为视图的任何状态声明内容和布局。SwiftUI知道该状态何时发生变化,并更新视图的呈现以匹配该状态。

代码:

List(landmarks) { landmark in
   HStack {
      Image(landmark.thumbnail)
      Text(landmark.name)
      Spacer()
      
      if landmark.isFavorite {
         Image(systemName: "star.fill")
            .foregroundColor(.yellow)
      }
   }
}

运行效果:

swift UI 学习 (一)_第4张图片

  1. 将小的、单一职责的视图组合成更大、更复杂的接口。在为任何苹果平台设计的应用程序之间共享自定义视图。
    代码:
struct FeatureCard: View {
   var landmark: Landmark
   
   var body: some View {
      landmark.featureImage
         .resizable()
         .aspectRatio(3/2, contentMode: .fit)
         .overlay(TextOverlay(landmark))
   }
}

效果:
swift UI 学习 (一)_第5张图片

  1. 创建平滑的动画就像添加一个方法调用一样简单。SwiftUI在需要时自动计算和动画转换。

代码:

VStack {
   Badge()
      .frame(width: 300, height: 300)
      .animation(.basic())
   Text(name)
      .font(.title)
      .animation(Animation.basic().delay(0.25))
}


效果:

swift UI 学习 (一)_第6张图片

你可能感兴趣的:(SwiftUI)