假设你在屏幕上有一个UIView,仅此而已。它没有嵌套在其他UIView中,没有父视图,它自己在那里。
那么它的frame属性变成了什么?
frame的定义我在这里找到了:"视图的frame是它的矩形在父视图的坐标系中的位置。"
假设你在屏幕上有一个UIView,仅此而已。它没有嵌套在其他UIView中,没有父视图,它自己在那里。
如果一个视图是可见的,它必须有一个父视图。UIWindow
也是一个UIView
(它派生自' UIView),所以如果你把它添加到你的主窗口,它仍然是父视图的子视图。
现在,如果你读到UIWindow
参考:
UIWindow类定义了一个被称为窗口的对象,用于管理和协调应用程序在设备屏幕上显示的视图。
或在这里:
在iOS中,window对象包含应用程序的视图并管理它们在设备上的显示。窗口的关联屏幕对象表示当前正在使用的特定设备显示。如果
因此,UIWindow
帧是根据显示坐标系来定义的。
和UIScreen
参考:
uisscreen对象包含设备整个屏幕的边界矩形。在设置应用程序的用户界面时,应该使用该对象的属性来获得应用程序窗口的推荐框架矩形。
一般来说,什么是视图的框架取决于视图和它是如何创建的。创建视图时,通常使用:
[[UIView alloc] initWithFrame:...];
所以,视图的框架是传递的CGRect
参数,即使视图没有添加到任何父视图。
当您使用addSubview
将视图添加到其他视图时,您在实例化它时指定的信息将用于确定添加的视图在父视图坐标系中的位置。
换句话说,UIView的框架只是视图的一个属性;当视图必须显示时,这个属性被解释为视图在父视图中的几何位置。
此外,视图的框架不会因为从父视图中移除而改变。它保持不变,以防你再次将它添加到视图。(感谢H2CO3的评论)
如果你在屏幕上有一个UIView它至少会在你的应用程序的主ui窗口中。所以你的第一个视图控制器的UIView将在主ui窗口的框架内。