UIWindow簡(jiǎn)介
在iOS開(kāi)發(fā)中也切,UIWindow和UIView一樣都是用來(lái)呈現(xiàn)界面的卡者。UIWindow并不包含任何默認(rèn)內(nèi)容侠仇,但是它被當(dāng)成UIView的容器存在磕秤。
UIWindow的作用:
- 作為UIView的最頂層容器脐湾,包含應(yīng)用顯示說(shuō)需要的所有UIView
- 傳遞觸摸事件
WindowLevel 屬性
這個(gè)屬性定義了UIWindow的層級(jí)臭笆。
這是一個(gè) 枚舉:
- UIWindowLevelNormal = 0.000000
- UIWindowLevelStatusBar = 1000.000000
- UIWindowLevelAlert = 2000.000000
手工創(chuàng)建UIWindow
有些時(shí)候,我們也希望在應(yīng)用開(kāi)發(fā)中秤掌,將某些界面覆蓋在所有界面的最上層愁铺。這個(gè)時(shí)候,我們就可以手工創(chuàng)建一個(gè)新的UIWindow闻鉴。需要注意的是茵乱,和UIView創(chuàng)建不同,UIWindow一旦被創(chuàng)建孟岛,它就自動(dòng)被添加到整個(gè)界面上了瓶竭。
下面是示例代碼:
#import "ViewController.h"
@interface ViewController ()
{
UIWindow *window;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//set a button
UIButton *button = [UIButton buttonWithType:UIButtonTypeContactAdd];
[self.view addSubview:button];
button.frame = CGRectMake(100, 100, 20, 20);
[button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchDown];
}
- (void)buttonClick
{
//set up window
window = [[UIWindow alloc]initWithFrame:CGRectMake(10, 100, self.view.frame.size.width - 20, 400)];
window.windowLevel = UIWindowLevelAlert;
window.backgroundColor = [UIColor redColor];
window.hidden = NO;
//add hidden gesture
UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc]init];
[gesture addTarget:self action:@selector(hideWindow)];
[window addGestureRecognizer:gesture];
}
- (void)hideWindow
{
window.hidden = YES;
window = nil;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
當(dāng)然 我們也可以在window上添加很多View,以實(shí)現(xiàn)彈出一個(gè) 優(yōu)美的框渠羞。
甚至我們可以在每次應(yīng)用退出有進(jìn)入的時(shí)候加個(gè)密碼頁(yè)面斤贰。
只要如下:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
//PasswordInputWindow是封裝好了的密碼頁(yè)面
//sharedInstance 單例獲取
//show 展示方法
[[PasswordInputWindow sharedInstance] show];
}