iOS进阶练习

UIWindows介绍

2018-10-24  本文已影响8人  下页天

简介

有些时候,我们也希望在应用开发中,将某些界面覆盖在所有界面的最上层。这个时候,我们就可以手工创建一个新的UIWindow。需要注意的是,和创建UIView不同,UIWindow一旦被创建,它就自动地被添加到整个界面上了(当然,其windowLevel要足够高)。
还有一点需要注意的是,如果我们创建的UIWindow需要处理键盘事件,那就需要合理地将其设置为keyWindow。keyWindow是被系统设计用来接收键盘和其他非触摸事件的UIWindow。我们可以通过makeKeyWindow和resignKeyWindow方法设置UIWindow实例的keyWindow与否。

注意

如果我们创建的UIWindow需要处理键盘事件,那就需要合理地将其设置为keyWindow。keyWindow是被系统设计用来接收键盘和其他非触摸事件的UIWindow。我们可以通过makeKeyWindow和resignKeyWindow(在不需要接收键盘时调用)方法设置UIWindow实例的keyWindow。

//默认是 [UIScreen mainScreen],改变屏幕是消息性能的操作,不应该写对性能敏感的代码
@property(nonatomic,retain) UIScreen *screen NS_AVAILABLE_IOS(3_2);  

//UIWindow在显示的时候会根据UIWindowLevel进行排序的,即Level高的将排在所有Level比他低的层级的前面。
@property(nonatomic) UIWindowLevel windowLevel;                   // default = 0.0 即Normal

//是否是主窗口
@property(nonatomic,readonly,getter=isKeyWindow) BOOL keyWindow;

//根控制器
@property(nonatomic,retain) UIViewController *rootViewController NS_AVAILABLE_IOS(4_0);  // default is nil

//调用窗口,使成为主窗口
- (void)becomeKeyWindow;                             

//调用窗口,取消成为主窗口
- (void)resignKeyWindow;                             

//将当前 UIWindow 设置成应用的 key window,但并不显示
- (void)makeKeyWindow;

//将当前 UIWindow 设置成应用的 key window,并显示
- (void)makeKeyAndVisible;

通过创建UIWindow,我们很容易实现将牧歌特定的界面置于最上层的小锅,但是这种特性不应该被滥用,如果弹出界面属于一个ViewController,那么使用ViewController的子控制器来实现

上一篇 下一篇

猜你喜欢

热点阅读