SwiftUI与UIKit常用组件对比大全

SwiftUI 与 UIKit 常用组件对比大全

在学习 SwiftUI 之前,我为大家整理了一份 SwiftUIUIKit 中常用组件的对比表,涵盖了 视图容器动画手势样式状态管理 等多个方面。(可能有误或有遗漏,欢迎指正 )

无论你是否有使用过 UIKit 的经验,这份对比表都可以帮助你快速了解 SwiftUI 和 UIKit 之间的对应关系。
即使你从未接触过 UIKit,这也不会影响你学习 SwiftUI,因为 SwiftUI 设计更加直观和现代化。

希望这份整理能为你的开发学习提供帮助!❤️


视图组件对比

SwiftUI 提供了许多简洁的视图组件,与 UIKit 的传统组件一一对应:

SwiftUIUIKit描述
TextUILabel文本视图
ImageUIImageView图像视图
ButtonUIButton按钮
TextFieldUITextField单行文本输入框
SecureFieldUITextField(secure)安全输入框
ToggleUISwitch开关
SliderUISlider滑块
StepperUIStepper计数器
ProgressViewUIProgressView进度条
PickerUIPickerView数据选择器
DatePickerUIDatePicker日期选择器
ScrollViewUIScrollView滚动视图
ListUITableView列表视图
ForEach循环创建 UIView循环视图
SpacerUILayoutGuide / UIView弹性空白视图
DividerUIView (height/width设置为1)分割线
FormUITableView (Grouped Style)分组表单
ColorUIColor / CGColor颜色表示
Shape (Circle, Rectangle, etc.)CAShapeLayerUIView几何形状

容器与导航

SwiftUI 的容器组件更加现代化,提供灵活的布局方式,与 UIKit 中的容器组件一一对应:

SwiftUIUIKit描述
HStackUIStackView (horizontal)水平堆叠容器
VStackUIStackView (vertical)垂直堆叠容器
ZStackUIView (层叠子视图)层叠容器
LazyVStack / LazyHStackUITableView / UICollectionView延迟加载的垂直/水平列表
LazyGridUICollectionView延迟加载的网格
GeometryReaderUIView + framebounds读取父视图尺寸
ScrollViewReaderUIScrollView + Programmatic Scroll滚动到指定位置
NavigationViewUINavigationController导航容器
NavigationStackUINavigationController(现代化方式)层级导航
TabViewUITabBarController标签视图
ToolbarUIToolbar工具栏

手势与交互

SwiftUI 提供了统一的手势接口,而 UIKit 使用的是独立的 UIGestureRecognizer

SwiftUIUIKit描述
.gestureUIGestureRecognizer添加手势识别器
.dragGesture()UIPanGestureRecognizer拖动手势
.magnificationGesture()UIPinchGestureRecognizer缩放手势
.rotationGesture()UIRotationGestureRecognizer旋转手势
.onHoverUIHoverGestureRecognizer鼠标悬停(macOS, iPadOS)
.onTapGestureUITapGestureRecognizer点击手势
.onLongPressGestureUILongPressGestureRecognizer长按手势

动画与过渡

SwiftUI 的动画功能更加直观,与 UIKit 的动画机制相辅相成:

SwiftUIUIKit描述
.animation()UIView.animate()添加动画
.transition()UIView 的过渡效果过渡动画
.matchGeometryEffect()UIView 的动画布局调整动画匹配几何布局变化
.withAnimation()UIView.animate()包装一段带动画的视图更新

样式与修饰符

SwiftUI 的样式系统使用修饰符链式调用,UIKit 则依赖视图属性配置:

SwiftUIUIKit描述
.clipShape()layer.maskCAShapeLayer剪切视图形状
.overlay()添加 subview在视图上覆盖子视图
.mask()maskView使用视图作为遮罩
.blur()UIVisualEffectView添加模糊效果
.rotationEffect()transform.rotation旋转视图
.scaleEffect()transform.scale缩放视图
.padding()layoutMargins设置内边距

状态管理

SwiftUI 的状态管理更加清晰,与 UIKit 的传统方式有本质区别:

SwiftUIUIKit描述
@State@property 或者局部变量状态变量
@BindingDelegate 或者 KVO父子视图之间的数据绑定
@ObservedObjectDelegateNotification观察外部状态
@EnvironmentObject全局依赖注入全局状态
@AppStorageUserDefaults应用级别的存储
@SceneStorageUserDefaults (Scene-based)场景级别的存储

小结

SwiftUI 的设计更加现代化,且使用声明式语法,大幅简化了界面开发的工作量。如果你有 UIKit 的经验,对比学习会更容易理解。如果是第一次接触 iOS 开发,直接从 SwiftUI 入手也是完全可以的。

赶快打开 Xcode,尝试用 SwiftUI 创建你的第一个 App 吧!🎉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

函数的彼端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值