SwiftUI vs UIKit:新手到底该学哪个?
iOS 开发新手最常问的问题之一就是:我到底该学 SwiftUI 还是 UIKit?
两个框架一个老牌稳健,一个新潮简洁,经常让人纠结。今天我结合自己的经验,聊聊它们的差异,并给你一些学习建议。
1. 基本介绍
| 框架 | 特点 |
|---|---|
| UIKit | 2008 年随 iOS SDK 一起发布,命令式编程,生态最成熟,几乎所有现有项目都在用 |
| SwiftUI | 2019 年推出,声明式编程,语法简洁,支持跨 Apple 全平台(iOS、iPadOS、macOS、watchOS、tvOS) |
2. 写一个按钮:直观对比
🔹 SwiftUI 示例
import SwiftUI
struct ContentView: View {
var body: some View {
Button("点我一下") {
print("按钮被点击了")
}
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
}
}
- 一眼能看懂:蓝底白字圆角按钮
- 样式和逻辑写在一起
- 改代码 → 即时预览,体验非常爽
UIKit 示例
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton(type: .system)
button.setTitle("点我一下", for: .normal)
button.backgroundColor = .systemBlue
button.setTitleColor(.white, for: .normal)
button.layer.cornerRadius = 10
button.translatesAutoresizingMaskIntoConstraints = false
button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
view.addSubview(button)
// AutoLayout 约束
NSLayoutConstraint.activate([
button.centerXAnchor.constraint(equalTo: view.centerXAnchor),
button.centerYAnchor.constraint(equalTo: view.centerYAnchor),
button.widthAnchor.constraint(equalToConstant: 120),
button.heightAnchor.constraint(equalToConstant: 44)
])
}
@objc func buttonTapped() {
print("按钮被点击了")
}
}
- 写法更繁琐,需要手动加约束
- 可控性强,能处理各种复杂 UI 场景
- 大型项目里依然是主流
3. 学习成本
-
UIKit:
- 资料最多,Stack Overflow / 掘金 / CSDN 随便一搜就有答案
- 但是写 UI 代码比较啰嗦,新手容易被 AutoLayout 搞晕
-
SwiftUI:
- 上手快,代码简洁,适合做小 demo 和独立 App
- 但复杂场景下可能要混用 UIKit(比如自定义控件)
👉 总结:SwiftUI 上手快,UIKit 资源多,属于 “爽 vs 稳” 的区别。
4. 就业与未来
- 短期(1~2 年)
大部分公司项目还是基于 UIKit,面试必问 UIKit。 - 长期(3~5 年)
Apple 明显在大力推广 SwiftUI,预计新项目会越来越多。
所以:
- 想进大厂 / 传统团队 → UIKit 必学
- 想做独立开发 / 新项目 → SwiftUI 更合适
5. 推荐学习路线(2025 年版)
- 先学 Swift 基础语法
- 入门 SwiftUI(写简单页面,体验声明式写法)
- 学 UIKit 核心(VC 生命周期、AutoLayout、TableView/CollectionView)
- 学习 SwiftUI + UIKit 混合开发(这是目前主流项目形态)
这样既能快速做出作品,又不会在求职时掉链子。
总结
- UIKit = 稳定、成熟、企业必备
- SwiftUI = 简洁、现代、未来趋势
- 新手建议:SwiftUI 入门 + UIKit 打底 → 最终双修
互动问题:
你现在更想走哪条路?
- 独立开发(个人 App)
- 大厂/团队开发
评论区聊聊你的选择,说不定能找到同路人。