UIScreen,UIWindow,UIView

12th,May,2016

CGPoint {x,y} 坐标信息
CGSize {width,height} 宽度和高度
CGRect {origin,size} CGPoint和CGSize

UIScreen(屏幕): 父类是NSObject, 一般用来获取屏幕大小

    CGRect screenBounds = [[UIScreen mainScreen] bounds]; // (0,0,width,height)
    CGRect viewBounds = [[UIScreen mainScreen] applicationFrame]; // (0,20,widht,height-20)
ps: 状态栏的高度20px

UIWindow(窗口):  父类是UIView

    应用程序只有一个窗口,表示为一个UIWindow类的实例。UIWindow是所有UIView的根,管理和协调应用程序的显示。一般应用程序只有一个UIWindow对象,即使有多个UIWindow对象(可手动创建多个UIWindow,同时加到程序里面),也只有一个UIWindow可以接受用户的触屏事件。
    self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]] ;// 创建应用程序窗口时,应该总是将其初始的边框尺寸设置为整个屏幕的大小
     作用:
              1)  作为容器,包含app所要显示的所有视图
              2) 传递触摸消息给程序中view和其他对象
              3) 与UIViewController协同工作,方便完成设备方向旋转的支持
     添加view到window的两种方法:
              1) addSubview  采用该方法需保持view对应的viewController的有效性,不能过早释放.
              2) 设置rootViewController UIWindow会负责viewController和view的生命周期的维护,防止其过早释放
     WindowLevel:
              UIWindow显示的时候会根据UIWindowLevel进行排序,即level高的将排在level低的前面。     
              typedef CGFloat UIWindowLevel; 
              const UIWindowLevel UIWindowLevelNormal;  // 0
              const UIWindowLevel UIWindowLevelAlert; // 2000
              const UIWindowLevel UIWindowLevelStatusBar;// 1000

UIView(视图): 父类是UIResponder 

    视图可以实现任意深度的嵌套。视图控制器的作用是处理视图的卸载与装载,处理由于设备旋转导致的界面旋转,和用于构建复杂用户界面的高级导航对象进行交互。
    视图回调:

          1) -didAddSubview 调用addSubview成功后会发送该消息
          2) -willRemoveSubview 回调通知父视图子视图即将被删除
          3) -willMoveToSuperview 视图移动前会发送该消息
          4) -didMoveToSuperview 会通知相关视图她们的上级视图已经变化
          5) -willMoveToWindow
          6) -didMoveToWindow 通知已经添加到窗口中

参考资料: 

       IOS学习记录 基础类UIWindow,UIView,UISreen篇
     ios开发视图和窗口的一些东西,之前没有研究的那么细

你可能感兴趣的:(UIScreen,UIWindow,UIView)