什么是SwiftUI?

Posted YungFan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是SwiftUI?相关的知识,希望对你有一定的参考价值。

2019 年 WWDC 大会上,Apple 在压轴环节向大众宣布了基于 Swift 语言构建的全新 UI 框架 — SwiftUI。开发者可通过它快速为所有的 Apple 平台创建美观、动态的应用程序。

特点

  1. 跨所有Apple平台:SwiftUI 只需使用一套工具和 API即可为 Apple 的所有硬件设备构建用户界面。

  2. 声明式语法:SwiftUI 采用声明式语法,可读性比较高,编写的代码也比较容易理解。

    • UI 是虚拟 Views 组织关系的一种描述。

    • 决定 UI 状态的 State 存在某个/些对象中。

    • 用一个函数描述 UI,参数为 State,即 UI = f(State)。

    • State 改变时,函数获取对应的新 State 的 UI 并与当前的 UI 进行差分计算,重新渲染。

  3. 预览功能:SwiftUI 可与 Xcode 11 无缝协作,让代码和设计完美同步。同时还提供对动态类型、暗黑模式、本地化和可访问性的自动支持。

SwiftUI VS UIKit

  • SwiftUI 会替换掉 UIKit / AppKit / WatchKit ?当然会,但显然不是现在。SwiftUI 在 ios 13,macOS 10.15,tvOS 13 和 watchOS 6 上运行,需要几年甚至更久才能普及。

  • 目前即使使用 SwiftUI ,还是需要使用 UIKit。UIKit 在很长一段时间内仍然是 iOS 开发的重要组成部分,两者会共存很长一段时间。

  • 二者可以相互嵌套使用。

SwiftUI中视图与视图控制器

SwiftUI 提供了View作为UIView的继承者,但暂时没有提供专门的UIViewController的继承者,仍然是用View来代替。SwiftUI 通过新的框架Combine进行数据的交互,这种新方法可以替代UIViewController,因此SwiftUI + Combine是今后 iOS 开发中的一对黄金搭档。

SwiftUI中的布局

SwiftUI 使用灵活的盒子布局系统,在开发中并没有直接使用自动布局AutoLayout的相关知识和 API。

SwiftUI运行速度

SwiftUI 运行速度很快,甚至超越 UIKit。原因有2:

  1. 压平了图层层次结构,因此会做更少的绘图。

  2. 很多操作直接绕过Core Animation直接让Metal进行处理。

学习要求

  • 熟悉 Swift 语法,掌握 Swift 5.1 相关的几个新特性

  • 熟悉 iOS 开发,掌握 iOS 开发中的各项知识

  • 开发环境:macOS 10.15 及以上

  • 开发工具:Xcode 11及以上

  • 运行环境:iOS 13 / iPadOS 13 / macOS 10.15 / tvOS 13 / watchOS 6 及以上






我的公众号

以上是关于什么是SwiftUI?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 参数传递给不带参数的调用

如何在 SwiftUI 中更改分段选取器的颜色外观?

在 NSManagedObject 编辑上更新 SwiftUI 视图

什么是SwiftUI?

SwiftUI 动画:如何延迟重复动画

为什么说 Compose 的声明式代码最简洁 ?Compose/React/Flutter/SwiftUI 语法对比