UIWindow小常识

•UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow

•iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了

•一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow

•也就说,没有UIWindow,就看不见任何UI界面

一般在程序启动完毕时创建和设置Window

所以在这个UIApplication代理方法中创建Window

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

•添加UIView到UIWindow中两种常见方式:

1.- (void)addSubview:(UIView *)view;

// 不推荐原因:创建的控制器为局部变量,出了

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

方法将会销毁,这是很严重的事情,View还在控制器销毁了,容易形成野指针错误

直接将view添加到UIWindow中,但并不会理会view对应的UIViewController

[email protected](nonatomic,retain) UIViewController *rootViewController;

// 推荐原因:rootViewController属性是强指针,不会销毁,只要rootViewController还在控制器就在,控制器在View就在

自动将rootViewController的view添加到UIWindow中,负责管理rootViewController的生命周期

•常用方法

- (void)makeKeyWindow;

让当前UIWindow变成keyWindow(主窗口)

- (void)makeKeyAndVisible;

让当前UIWindow变成keyWindow,并显示出来

#import "LMPAppDelegate.h"
#import "LMPViewController.h"

@implementation LMPAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // 创建 Window
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // 设置Window颜色
    // 建议:最好不要设置Window颜色,因为View假如没有设置颜色容易被设置颜色的Window盖住,View里设置颜色即可
//    self.window.backgroundColor = [UIColor blueColor];
    // 创建控制器
    LMPViewController *oneView = [[LMPViewController alloc] init];

    // 将控制器的View添加到Window中
//    [self.window addSubview:oneView.view];

    // 强烈推荐使用这种方法
    // 设置Window的根控制器
    self.window.rootViewController = oneView;

    // 显示Window
    [self.window makeKeyAndVisible];
    return YES;
}

UIWindow的获得:

•[UIApplication sharedApplication].windows

在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象

(平时输入文字弹出的键盘,就处在一个新的UIWindow中)

•[UIApplication sharedApplication].keyWindow

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

•view.window

获得某个UIView所在的UIWindow

时间: 2024-10-27 01:55:31

UIWindow小常识的相关文章

C#小常识,持续更新..

1.cs部分添加隐藏样式IntegratedEquipmentblock.Style.Add("display", "none"); 2.gridview添加奇偶行样式 protected void gvIntegratedEquipmentList_RowDataBound(object sender, GridViewRowEventArgs e) { //添加样式-----------begin switch (e.Row.RowType) { case Da

投影机使用维护保养小常识

投影机使用维护保养小常识 随着教育信息化进程的不断推进,各级各类学校都斥资兴建了多媒体教室.LCD投影机是多媒体教室中最重要的设备之一,又非常贵重,因此维护并保养好投影机成为投影机在使用时,有些用户要求信号源和投影机之间有较大距离,如吊装的投投影机是一种精密电子产品,它集投影机在使用时,有些用户要求信号源和投影机之间有较大距离,如吊装的投影机一般都距信号源15米以上,这时相应信号电缆必须延长.由此会造成输入投影机的信号发生衰减,投影出的画面会发生模糊拖尾甚至抖动的现象.这不是投影机发生故障,也不

安卓小常识(3)

Bundle bunde = this.getIntent().getExtras(); getIntent得到一个Intent,是指上一个activity启动的intent,这个方法返回intent对象,然后调用intent.getExtras()得到intent所附带的额外数据 至于说所谓的额外数据是什么数据,之后弄明白再处理. 安卓小常识(3),布布扣,bubuko.com

Android Studio使用中的小常识

1.如何继承抽象类? 1.1新建一个类如下: public class PersonDBOpenHelper{ } 1.2手写extends 你继承的类名 public class PersonDBOpenHelper extends SQLiteOpenHelper{ } 系统会提示此类要么定义为抽象类,要么实现父类的抽象方法.此处我们要做的是实现父类方法. 1.3右键单击SQLiteOpenHelper,在弹出菜单中单击"Generate...",在弹出菜单中单击"Imp

网络小常识

1. 路由器不会转发广播流量 每个VLAN都是一个单独的广播域,VLAN之间不会交换广播流量,所以说一个VLAN也被称为一个广播域 任何一台LAN交换机都不会转发错包(至少运行正常的LAN交换机不会如此行事) 除非有特殊配置,否则LAN交换机会从除接收端口以外的所有端口转发多播流量 只有开启多播路由功能的路由器才会转发多播流量 在每一个Ethernet(LAN)中,都会存在数量合理的广播数据包:若非如此,主机之间便不能正常通信.但倘若广播数据包的数量过多,则反过来又会影响网络的正常运行 2. 网

美女必备美容护肤知识大全护肤小常识

美女必备美容护肤知识大全护肤小常识随着外界的污染和岁月的流逝,肌肤会出现各种各样的问题.下面小编为你搜集了各种各样的美容护肤的小窍门,针对不同的肌肤问题,是美女必备的美容护肤知识大全,下面来学习学习吧!方法/步骤护肤小窍门一 :啤酒收缩毛孔取面膜碗,倒入适量的啤酒,再将压缩面膜浸入啤酒中,三分钟后,取出,稍柠出一点多余的水分.敷于脸部,待水分快吸干时,在浸入反复如此,敷半个小时,再用冷水洗净脸部,毛孔不见了,肌肤也会变得非常的紧致....护肤小窍门二 :酸奶蜂蜜保湿...将酸奶和蜂蜜取同样的分量

日常口腔保健小常识

口腔保健一定要从日常生活中做起才可以,下面我们来了解一下日常口腔保健的小常识吧. 1.刷牙 这是最普通的方法.人们都在刷牙,但刷得好.认真刷的人不多.所谓刷得好,就是要把每颗牙的各牙面都刷干净.每天至少早晚各刷一次. 正确的刷牙方法是,上牙由上向下旋转刷,下牙由下向上旋转刷,上.下前牙里面要顺牙缝刷,嚼东西的牙面应前后来回刷. 为了把牙面刷得较干净,必须选用刷头小.毛软而有弹性的保健牙刷. 为了预防龋齿和牙周病,最好使用含有氟化钠或洗必太牙膏.含有氟化钠或氯化锶的牙膏还具有解除牙齿过敏的作用.

安卓小常识(2)

1)创建一个android项目 填写项目信息 2)      创建一个新Activity 右键点击Eclipse左边(默认)你要加入Activity的包,比如,我的包是com.INdroid.layout.然后选New->Class,输入类名后(注意首字母大写),在Superclass的Browse那里点击.最后在Choose a type那里输入Activity.然后点OK就可以了 3)      创建Activity布局 在rec/layout文件夹里创建布局xml页面 new->othe

夏季养生小常识 保健养生知识

夏季是一年中气温最高的季节,人体的新陈代谢十分旺盛.人们很容易受到夏季炎热气温的影响,身体的各项生理功能和食欲等均会发生变化.夏季气温高湿度大,往往使人精神萎靡.倦怠乏力.胸闷.头昏.食欲不振.身体消瘦.此时,吃点苦味蔬菜大有裨益.中医学认为,夏季人之所以不爽缘于夏令暑盛湿重,既伤肾气又困脾胃. 1.最佳蔬菜--苦味菜 夏季气温高湿度大,往往使人精神萎靡.倦怠乏力.胸闷.头昏.食欲不振.身体消瘦.此时,吃点苦味蔬菜大有裨益.中医学认为,夏季人之所以不爽缘于夏令暑盛湿重,既伤肾气又困脾胃.而苦味食