我们知道UiWindow 继承自UIView,所以UIWindow 除了具有UIView 的所有功能外,还有一些特有的属性方法,最常用的就是程序刚刚启动时,调用UIwindow的makeKeyAndVisible使整个程序可见。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];
viewcontroller = [[ViewControlleralloc]init];
self.window.rootViewController =viewcontroller;
[self.windowmakeKeyAndVisible];
return YES;
}
所以UIWindow的主要作用:
1,作为UIView 的最顶层容器,包含应用显示所需要的所有的UIView。
2.传递触摸消息和键盘事件给UIView
下面说一下跟这篇博客密切相关的一个属性 windowLevel
UIKIT_EXTERN constUIWindowLevel UIWindowLevelNormal;
UIKIT_EXTERN constUIWindowLevel UIWindowLevelAlert;
UIKIT_EXTERN constUIWindowLevel UIWindowLevelStatusBar;
其中UIWindowLevelNormal 的值使0, UIWindowLevelAlert 的值是2000,UIWindowLevelStatusBar的值是1000
下面开始我们今天要实现的功能
所谓密码保护,就是在App进入后台后,重新进入App中的时候需要输入一个通行的密码进入App这个密码可以和用户的登录密码不一致,用来保护用户的的个人信息,防止用户的手机不在身边的时候被人偷看,或者手机丢失后,敏感信息的泄漏,例如挖财,就有这样的功能,所以一般涉及到钱,敏感个人信息的App都应该有这样的功能
首先自定义个一个UIWindow 的子类
@interface PassWordInputWindow :UIWindow
+(PassWordInputWindow *)sharedInstance;
-(void)show;
@end
其中 +(PassWordInputWindow *)sharedInstance; 是一个创建单例的方法
具体实现如下:
+(PassWordInputWindow *)sharedInstance
{
staticid sharedInstance =nil;
staticdispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[selfalloc]initWithFrame:[UIScreenmainScreen].bounds];
});
return sharedInstance;
}
-(void)show
{
self.windowLevel =UIWindowLevelAlert;//最顶层显示
[selfmakeKeyWindow];
self.hidden =NO;
}
具体的demo实现如下;
原文地址:http://blog.csdn.net/hanhailong18/article/details/43016865