iOS开发框架UIKit
iOS开发框架UIKit

iOS开发框架UIKit

UIKit 是苹果公司提供的 iOS 或 Apple tvOS App 所需的基础架构。它提供了用于实施界面的窗口和视图架构,用于向 App 提供多点触控和其他类型输入的事件处理基础架构,以及管理用户、系统和 App 之间互动所需的主运行循环。

该框架提供的其他功能包括动画支持、文档支持、绘图和打印支持、当前设备的相关信息、文本管理和显示、搜索支持、辅助功能支持、App 扩展支持和资源管理。

UIKit架构

UIKit 位于应用层的最高层,但与低层框架存在明确的分工:

UIKit:负责视图树、事件分发、动画 API、控制器生命周期。

Core Animation:负责图层树(CALayer)、合成与渲染。

Core Graphics:负责 CPU 端绘制(形状、文字、图片)。

UIKit 的大多数控件本质上是 CALayer 的包装。UIKit 操作视图树(UIView),Core Animation 操作图层树(CALayer),二者完全同步。

可以认为 UIKit 提供了“抽象接口”,而 Core Animation 是“真正渲染的 GPU 引擎”。

UIKit结构

1、UIApplication

代表整个应用程序的生命周期,由系统自动创建,不需要手动实例化。

通常在 AppDelegateSceneDelegate 中配合使用,响应应用启动、进入后台、前台等状态。

2UIWindow

视图层级的最顶层容器,每个 window 通常包含一个 rootViewController,多用于多场景(Scene)或外部显示器支持。

3、UIViewController

视图控制器,提供界面级别的生命周期管理:

viewDidLoad():视图加载完成。

viewWillAppear() / viewDidAppear():即将/已经显示。

viewWillDisappear() / viewDidDisappear():即将/已经隐藏。

可以被模态弹出 (present) 或放入导航栈中。

4、UIView

所有界面元素的基础类,矩形区域。可组合、嵌套、添加动画。

UIView拥有frame、bounds、transform,自动布局、事件响应,并承载CALayer(负责绘制)。

let redView = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
redView.backgroundColor = .red
view.addSubview(redView)

事件处理与响应链

触摸事件发生时,UIWindow从根视图开始递归hitTest,判断是否包含触点,子视图逆序遍历,最后返回合适的视图。

当找到目标视图后,事件会沿着“响应链”(UIResponder → UIView → UIViewController → UIWindow → UIApplication → App Delegate)向上传递。

UIKit控件

1、界面控制器:UIViewController

2、视图元素:UIView、UILabel、UIButton、UIImageView

3、表格/列表:UITableView、UICollectionView

4、导航与结构:UINavigationController、UITabBarController

5、动画:UIView.animate(…)

6、触摸处理:UITapGestureRecognizer、UIPanGestureRecognizer

7、窗口管理:UIWindow、UIApplication

UIKit和SwiftUI区别

1、编程方式:UIKit基于命令式代码(Imperative),SwiftUI基于声明式代码(Declarative)。

2、生命周期:UIKit更负责,管理控制器堆栈,SwiftUI自动管理状态和界面。

3、学习曲线:UIKit更复杂,更底层,SwiftUI更简单、更现代化。

4、使用时间:UIKit自2008年至今,成熟稳定。SwiftUI从iOS 13+(2019年)起推出,仍在发展。

代码示例:

// UIKit 的按钮
let button = UIButton(type: .system)
button.setTitle("点击我", for: .normal)
button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
view.addSubview(button)

// SwiftUI 的按钮
Button("点击我") {
    print("按钮被点击")
}

总结

UIKit 是 iOS 上最经典、最成熟的 UI 框架,SwiftUI 是它的现代继任者。

如果需要开发 iOS 13+ 版本,推荐从SwiftUI开始学起,SwiftUI兼容macOS、WatchOS、小组件等系统。

还可以通过iOS App声明周期管理,了解UIKit各核心框架的管理内容。

相关文章    

1、UIKit简体中文文档:https://developer.apple.com/cn/documentation/uikit/

2、iOS多用户界面场景UIWindowScene:https://fangjunyu.com/2025/05/21/ios%e5%a4%9a%e7%94%a8%e6%88%b7%e7%95%8c%e9%9d%a2%e5%9c%ba%e6%99%afuiwindowscene/

3、iOS支持多窗口的UIScene:https://fangjunyu.com/2025/05/21/ios%e6%94%af%e6%8c%81%e5%a4%9a%e7%aa%97%e5%8f%a3%e7%9a%84uiscene/

4、iOS App生命周期管理:https://fangjunyu.com/2025/05/20/ios-app%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f%e7%ae%a1%e7%90%86/

5、iOS窗口容器UIWindow:https://fangjunyu.com/2025/05/20/ios%e7%aa%97%e5%8f%a3%e5%ae%b9%e5%99%a8uiwindow/

6、iOS界面UIView:https://fangjunyu.com/2025/05/20/ios%e7%95%8c%e9%9d%a2uiview/

7、iOS代理类AppDelegate:https://fangjunyu.com/2025/05/20/ios%e4%bb%a3%e7%90%86%e7%b1%bbappdelegate/

8、iOS UIApplication类:https://fangjunyu.com/2025/05/20/ios-uiapplication%e7%b1%bb/

9、iOS管理多窗口的SceneDelegate:https://fangjunyu.com/2025/05/20/ios%e7%ae%a1%e7%90%86%e5%a4%9a%e7%aa%97%e5%8f%a3%e7%9a%84scenedelegate/

10、SwiftUI和iOS核心类UIViewController:https://fangjunyu.com/2025/05/19/swiftui%e5%92%8cios%e6%a0%b8%e5%bf%83%e7%b1%bbuiviewcontroller/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注