UIKit中UIViewController和UIView的关系

作者:Joho
创建于:2025-01-07

什么是 UIViewController?

UIViewController是界面的管理者,负责管理一个视图UIView的生命周期和用户交互。 它包含一个view属性,这个属性是一个 UIView的实例,代表该控制器管理的根视图。

UIViewController通过生命周期方法(如viewDidLoadviewWillAppear等)来管理视图的显示和隐藏。

每个UIViewController通常对应一个屏幕或一个功能模块。

什么是 UIView?

UIView是界面上显示的内容,负责展示 UI 元素和处理触摸事件。

UIViewController的根视图可以包含多个子视图,这些子视图可以是系统提供的控件(如按钮、标签等),也可以是自定义的视图。

UIViewUIViewController 管理的视图层次结构中的一部分。

它们之间的关系

UIViewController通过其view属性管理根视图,以及根视图中的所有子视图。

UIViewController不直接处理绘图,而是通过UIView来处理。

想象一下你正在进行一场演出,UIViewController 就像导演。它控制着舞台上的一切——什么时候灯光亮起,演员如何移动,舞台布景怎么变化。在应用程序中,UIViewController 控制着界面上各个元素的显示和交互。它决定了: • 界面何时显示或隐藏。 • 用户与界面交互时,应用如何响应。

UIView 就是舞台本身,以及上面的布景和道具。它是用户可以看到并与之交互的部分。在应用中,UIView 包括按钮、标签、图片等界面元素。UIView 负责展示这些内容,但不处理背后的逻辑——这是 UIViewController 的工作。

UIViewController(导演)告诉 UIView(舞台)该展示什么内容和如何回应观众的互动。每个 UIViewController 都有一个主 View,它可能包含多个子 View,就像舞台上可能有多个道具和布景。

它们关系图如下:

+---------------------+
|   UIViewController  |
|---------------------|
| view: UIView        |  ◀─── 管理
+----------▲----------+
           │
           │
+----------┴----------+
|       UIView        |  ◀─── 根视图
|---------------------|
| Subview 1           |
| Subview 2           |
| Subview 3           |
+---------------------+

通过代码或StoryboardUIViewController可以创建和管理视图,并通过IBOutlet连接到视图的子元素,以便在代码中操作它们。

代码如下:

class MyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        // 创建一个 UIView 实例
        let myView = UIView()
        myView.backgroundColor = .blue

        // 将 myView 添加到 viewController 的根视图
        self.view.addSubview(myView)
    }
}

总结来说,UIViewController是视图的管理者,负责逻辑控制和生命周期管理,而UIView是实际显示在屏幕上的内容。