UIWindow

UIWindow
UIWindow —> UIView

一、 常用方法
1.- (
void )makeKeyWindow;
让当前 UIWindow 变成 keyWindow (主窗口)

2.- (
void )makeKeyAndVisible;
让当前 UIWindow 变成 keyWindow ,并显示出来
注意:
1.makeKeyAndVisible就意味着,让window成为主窗口,并且可见。
2.窗口可以设置很多个,但是UIWindow有且只有一个主窗口。

3.[UIApplication sharedApplication].keyWindow
用来接收键盘以及非触摸类的消息事件的 UIWindow ,而且程序中每个时刻只能有一个 UIWindow keyWindow 如果某个 UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindow,主要针对IOS6。

4.[UIApplication sharedApplication].windows
打印出屏幕上有多少 window。
注意:
平时输入文字弹出的键盘,就处在一个新的UIWindow中,拿到键盘所在的window就可以修改键盘的按钮

UIWindow只有一个主窗口, UIWindow 是一种特殊的 UIView ,通常在一个 app 中只会有一个 UIWindow,控制器不具备主动显示的功能,只有UIWindow才能显示到屏幕上,控制器要依赖UIWindow。


/**
 *  
程序启动完毕就会调用一次
 */

- (
BOOL )application:( UIApplication  *)application didFinishLaunchingWithOptions:( NSDictionary  *)launchOptions
{
    
// 1. 创建 window
    
self . window  = [[ UIWindow   alloc initWithFrame :[[ UIScreen   mainScreen bounds ]];
    
// 2. 设置 window 的背景色
    
self . window . backgroundColor  = [ UIColor   whiteColor ];
    
// 3. 显示 window
    [
self . window   makeKeyAndVisible ];
    
return   YES ;
}

注意:
不推荐下面这种写法,原因是,
1.MjOneViewController是一个局部变量方法调用完之后局部变量释放,但是控制器的View还在UIWindow上,这样会出现野指针错误。

2.旋转事件也会有影响,[self.window addSubview:one.view];这种方法,相当于一个普通的View添加到UIWindow上,UIApplication并不知道根控制器。
MjOneViewController *one = [[MjOneViewController allocinit];
[self.window addSubview:one.view];

3.在创建window的时候,要注意。
/**
 *  
程序启动完毕就会调用一次
 */

- (
BOOL )application:( UIApplication  *)application didFinishLaunchingWithOptions:( NSDictionary  *)launchOptions
{
    
// 1. 创建 window
    
UIWindow  * window =   [[ UIWindow   alloc initWithFrame :[[ UIScreen   mainScreen bounds ]];
    
// 2. 设置 window 的背景色
    
window  . backgroundColor  = [ UIColor   whiteColor ];
    
// 3. 显示 window
    [
window   makeKeyAndVisible ];
    
return   YES ;
}

这时候,window是不能显示到窗口上的,因为这时候的window是哥局部变量,当程序启动完成之后,就会被销毁。
因此要加上, self . window =  window。window是强引用的,防止window在创建完毕就被销毁。

4.一个窗口只有一个控制器。
self . window . rootViewController = [[ UIViewController alloc ] init ];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值