UIWindow是UIView的子类,主要作用是管理View,它本身由UIApplication管理,响应者查找的时候其实也通过了它。UIApplication又是UIReponder的子类。对于UIWindow其实主要要注意两个内容,一个是UIWindow 的层级(WindowLevel),层级用来控制显示结构,同层级的以添加的顺序为基础。
WindowLevel
设置这个属性,最高的可见,不一定是这三个取值。
UIKIT_EXTERN const UIWindowLevel UIWindowLevelNormal; // 0.000
UIKIT_EXTERN const UIWindowLevel UIWindowLevelAlert; // 1000.0
UIKIT_EXTERN const UIWindowLevel UIWindowLevelStatusBar // 2000.0
自己创建window
- (void)canlceWindow {
_uiwindow.hidden = YES;
_uiwindow = nil;
}
- (IBAction)tapAction:(id)sender {
_uiwindow = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
_uiwindow.windowLevel = UIWindowLevelNormal;
_uiwindow.backgroundColor = [UIColor redColor];
_uiwindow.hidden = NO;
UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc]init];
[gesture addTarget:self action:@selector(canlceWindow)];
[_uiwindow addGestureRecognizer:gesture];
}
继承UIWindow
实现方式类似,将该UIWindow创建显示出来即可。UIWindow在被创建之后就会直接贴到屏幕上,但是如果想要处理键盘事件需要将它设置为keywindow。