iOS开发:窗口、根视图与视图层次结构解析
1. 窗口与根视图基础
在iOS开发中,视图层次结构的顶部是窗口(Window)。窗口是 UIWindow (或其自定义子类)的实例,而 UIWindow 是 UIView 的子类。在应用启动时,会创建并显示一个窗口,否则屏幕将是黑色的。从iOS 13开始,应用在iPad上可能支持多个窗口;若不支持,或者在iPhone上运行,应用将只有一个窗口(主窗口)。可见窗口是所有其他可见视图的背景和最终的父视图,反之,所有可见视图都是某个可见窗口的子视图。
在Cocoa编程中,不能手动或直接向窗口添加子视图。窗口与其包含的界面之间的联系是通过窗口的根视图控制器(Root View Controller)实现的。首先实例化一个视图控制器,然后将该实例赋值给窗口的 rootViewController 属性。此后,该视图控制器的主视图将占据整个窗口,它是窗口的唯一子视图,其他所有可见视图都是根视图控制器视图的子视图。
2. 窗口场景架构
从iOS 13开始,应用的窗口由窗口场景( UIWindowScene )支持,这与iOS 12及之前的架构有很大不同,当时并不存在窗口场景。
2.1 旧架构(iOS 12及之前)
旧架构基于窗口,窗口是应用委托(App Delegate)的属性。如果应用是在Xcode 10或更早版本中创建的,默认使用旧架构。
2.2 新架构(iOS 13及之后)
新架构基于
超级会员免费看
订阅专栏 解锁全文
96

被折叠的 条评论
为什么被折叠?



