如果一个UIView没有超视图,它的框架属性会变成什么样子?

假设你的屏幕上有一个UIView,就是这样。 它不是嵌套在其他的UIView中,没有超级视图,在它的寂寞中。

那么框架属性变成了什么?

我在这里find的框架的定义:“视图的框架是它的矩形在超视图的坐标系中的位置。

假设你的屏幕上有一个UIView,就是这样。 它不是嵌套在其他的UIView中,没有超级视图,在它的寂寞中。

如果一个视图是可见的,它必须有一个超视图。 UIWindow也是一个UIView (它来自`UIView),所以如果你把它添加到你的主窗口,它仍然是一个超级视图的子视图。

现在,如果你读了UIWindow参考:

UIWindow类定义了一个被称为窗口的对象,用于pipe理和协调应用程序在设备屏幕上显示的视图。

或在这里 :

在iOS中,窗口对象包含应用程序的视图,并在设备显示屏上pipe理其显示。 窗口的关联屏幕对象表示当前正在使用的特定设备显示。 如果

所以, UIWindow框架是根据显示坐标系定义的。

UIScreen参考 :

UIScreen对象包含设备整个屏幕的边界矩形。 设置应用程序的用户界面时,应该使用此对象的属性来获取应用程序窗口的推荐帧矩形。

一般来说,视图的框架取决于视图及其创build方式。 创build视图时,通常使用:

 [[UIView alloc] initWithFrame:...]; 

所以,视图的框架是传递的CGRect参数,即使视图没有添加到任何超级视图。

当您使用addSubview将该视图添加到其他视图时,那么您在实例化该视图时指定的信息将用于确定添加视图在超视图坐标系中的位置。

换句话说,UIView的框架只是视图的一个属性; 当必须显示视图时,该属性被解释为其超视图内的视图的几何位置。

此外,一个观点的框架不会改变只是从它的超级观点去除。 它保持不变,以防再次将其添加到视图中。 (感谢H2CO3的评论)

希望这可以帮助。

如果你在屏幕上有一个UIView它至less会在你的应用程序的主UIWindow中。 所以你的第一个视图控制器的UIVIew将在主UIWindow框架内。