UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow,但可以手动创建多个UIWindow
UIWindow的主要作用:
提供一个区域来显示视图
将事件分发给视图
与UIViewController协同工作,方便完成设备方向旋转的支持
王军老师 22:32:36
添加UIView到UIWindow中两种常见方式:
addSubview:直接将UIView添加到UIWindow中,程序负责维护UIView的生命周期以及刷新,但并不会理会UIView对应的UIViewController
rootViewController:自动将UIViewController对应的UIView添加到UIWindow中,同时负责维护UIViewController和UIView的生命周期
常用方法
makeKeyWindow:让当前UIWindow变成keyWindow
makeKeyAndVisible:让当前UIWindow变成keyWindow,并显示出来
王军老师 22:33:11
UIView是iOS中界面元素的基础,所有的界面元素都继承它,可以说在iPhone中你能看到的、摸到的,都是UIView
UIView的基本功能:
绘图和动画(用CALayer和CAAnimation实现)
事件处理(继承了UIRsponder)
一个UIView可以包含和管理若干个子视图,决定着子视图的位置和大小
王军老师 22:33:30
frame
在父视图坐标系中的位置(CGPoint origin)和大小(CGSize size)
bounds
在本视图坐标系中的位置(CGPoint origin的x、y永远为0)和大小(CGSize size)
center
视图的中点在父视图坐标系中的位置
UIView *superview 父视图
NSArray *subviews 所有的子视图
UIWindow *window 当前视图所在的窗口
BOOL userInteractionEnabled YES代表接收触摸事件
王军老师 22:33:38
View1是View2的父视图
View2.frame = {x=70,y=50,width=60,height=40}
View2.bounds = {x=0,y=0,width=60,height=40}
View2.center = (x=100, y=70)
UIKit框架中的坐标系都如左图所示,视图的左上角为原点(0,0),x轴向右正向延伸,y轴向下正向延伸
View3中frame的x,y值:
如果绿色视图是View3的父视图,那么View3的x,y为红色箭头的长度
如果View1是View3的父视图,那么View3的x,y为蓝色箭头的宽度
王军老师 22:33:48
- (void)removeFromSuperview
从父视图中移除(当前视图的计数器会-1)
- (void)addSubview:(UIView *)view
添加一个子视图(新添加的子视图在父视图的最上面,子视图的计数器会+1)
- (UIView *)viewWithTag:(NSInteger)tag
根据tag找到对应的子视图
王军老师 23:23:02
frame指的是:该view在父view坐标系统中的位置和大小。(参照 点是父亲的坐标系统) bounds指的是:该view在本身坐标系统中 的位 置和大小。(参照点是本身坐标系统)