Swift UI初识及与Flutter的异同

Swift UI初识及与Flutter的异同

飞书文稿地址:https://xhoid9hw42.feishu.cn/docs/doccn6AIqg8WEphl1EHTWGrqstd

1、苹果官网对于SwiftUI的简单介绍

SwiftUI 于 2019 年度 WWDC 全球开发者大会上发布,它是基于 Swift 建立的声明式框架。 https://developer.apple.com/cn/xcode/swiftui/

1、支持全系列Apple设备,支持UI和动画的编写

以往Apple开发者需要对mac、ios、iwach等不同设备学习不同的编程Apple SDK,导致各个平台的都有一定的学习成本,而Swift UI做到了各个设备之间代码的一致性。并且Siwft编写的UI将由系统智能适配不同尺寸的屏幕,这也大大节约了屏幕适配的时间。

只要使用 SwiftUI,系统会默认支持白天和黑夜模式的自动切换;在各种尺寸的屏幕间自动适配;为任意控件添加 Haptic Touch 或是动画;在 Apple Watch 上带来独立而完整的体验;将iOS 的应用转换为 macOS 的原生应用,会以最快的速度支持第一方的各种新特性。这种对苹果硬件的深入支持是那些跨平台方案无论如何无法实现的。可以看一些采用第三方框架的知名应用,像是横屏、黑夜模式、小组件等基础的特性,到现在都迟迟没有适配。

2、声明式语法,维护更加简单,代码可读性更高

3、及时且灵活的实时预览工具

4、与UIKit彼此相容

一般开发者学习新技术有一个最大的障碍就是原先的项目怎么办。但 SwiftUI 在这一点上做的相当不错。由于是一个新发布的框架,UI 组件并不齐全,当 SwiftUI 中并没有提供类似的功能时,就可以把 UIKit 中已有的部分进行封装,提供给 SwiftUI 使用。需要做的仅仅是遵循UIViewRepresentable协议即可。相反,在已有的项目中,也可以仅用 SwiftUI 制作一部分的 UI 界面。 当然两种代码的风格是截然不同的,但在使用上却基本没有性能的损失。到最终成品时,用户也无法分辨出两种界面框架的不同。

2、开始构建一个简单的Swift UI项目

https://developer.apple.com/tutorials/swiftui/creating-and-combining-views 详细使用示例可通过以上链接下载官方Demo

1、Flutter简介

Flutter是谷歌的移动UI框架,采用谷歌Dart语言进行编程,可以快速在iOS和Android上构建“高质量”(打问号❓)的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。 采用安卓内核渲染图形界面,因flutter效率上比react native要高,但是react native是通过桥接调用的原生的UI和交互,所以体验上最为接近原生。理论和实际体验flutter对于安卓支持是最好的,但是对于iOS因为用安卓内核重新渲染了push,pop等界面交互和图形操作,实际在处理复杂图形交互App的时候,体验依然不如iOS原生和react native。 https://flutterchina.club/

2、安装笔记

https://github.com/CoderHJZhao/flutter-dart

3、使用

4、Flutter和react native对比

https://juejin.cn/post/6937124684030967845

以目前i最新的OS和安卓手机图形渲染能力来看,一个第三方跨平台SDK的性能对比,只要不是太过份,其实对比都没有太大意义。毕竟用户能感知到的最明显的还是一个软件的交互和流畅度。以失去原生体验为前提而节省开发成本的跨平台开发,长远来看对用户来说都不是一件值得高兴的事。

而且长远来看,苹果每一次都对跨平台、跨审核的App和SDK重拳出击了,比如一开始的JS热更新、RA、到现在的flutter,事实证明,要想长远发展一个项目,用原生代码开发才是最具性价比的一件事。