由于我是自学的,后来在网上找了个视频看,无限互联的视频,(感觉这部分没有听太懂,可能是我跳着看的缘故吧,在此没有评价的意思,并感谢那位老师免费发布视频)。
言归正传,在网上看了好多大神的帖子,基本上算是懂了。
首先说一下UIwindow:指的是一个可视化窗口,其他的不用管,在目前的iphone/ipad开发中,几乎都是一个窗口,这个窗口本身是没有内容的,它的作用是仅仅只作为一个画布,让开发者往画布上画东西(添加各种视图),传递触摸消息到程序中view和其他对象。
UIWindow有显示的级别:UIWindowLevel:
<span style="white-space:pre"> </span>const UIWindowLevel UIWindowLevelNormal;
const UIWindowLevel UIWindowLevelAlert;
const UIWindowLevel UIWindowLevelStatusBar;
typedef CGFloat UIWindowLevel;
UIWindow上面可以直接放一些视图,但是视频中的老师说最好不要这样做,具体为什么没听懂,以后补上。
下面说一下UIView:在APP的开发中十分重要,在开发中几乎所有的可视化控件都是它的子类,负责渲染区域的内容,并且响应该区域内发生的触摸事件。
可以用addSubview来添加子类,不管谁添加它,只要越晚添加,视图就在越上层移除父视图也会把它得子视图移除,也可以通过设置子类的alpha(透明度)来让父类更明显一点。
子类在父类上的显示位置可以设置:有frame:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)
bound:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)
center:这个就不用解释了。。。
那下面就说一下UIView和UIWindow的关系吧。
UIWindow继承自UIView,关于这一点可能有点逻辑障碍,画框怎么继承自画布呢?不要过于去专牛角尖,画框的形状不就是跟画布一样吗?拿一块画布然后用一些方法把它加强,是不是可以当一个画框用呢?这也是为什么 一个view可以直接加到另一个view上去的原因了。
看一下系统的初始化过程(在application didFinishLauchingWithOptions里面):
<span style="white-space:pre"> </span>self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.window.backgroundColor = [UIColor grayColor]; //给window设置一个背景色
[self.window makeKeyAndVisible]; //让window显示出来