Windows概念总结

1. 每个iOS程序都至少需要一个window,window的作用:

  • 包含程序的可视化内容.

  • 在传递触摸事件给视图和其他对象中起到重要的作用

  • 与视图控制器协作来响应orientation改变.

2.window没有任何可视化内容,它只是给视图提供一个容器。
3.大多数程序只创建一个window,该window对象是从主nib文件中创建


创建和配置window

1.无论是通过IB或者代码创建window,都应该在application delegate中保留对其的引用(retain it)。

2.无论你在前台或者后台运行程序,总是应该在运行时来创建window。如果直接在后台运行,那么直到程序进入前台时才让window可见。

3.如果你使用IB来创建window,那么建议选中Full Screen at Launch。如果该选项没有被选中,那么你的window会比设备的屏幕小,这样一些触摸事件不会被响应。因为视图默认是不会被剪裁到父视图中的,这使得视图看上去仍然是全屏,但是却不会响应一些事件。


用代码创建window

1.当创建window的时候,总是应当将window的大小设置为整个屏幕的大小,不应该去调整widnow的大小去适应状态栏,状态栏总是显示在window上方。需要调整的是你添加到window中的视图。如果你使用视图控制器,那么视图控制器会自动调整视图的大小。

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
2.关于UIScreen

UIScreen对象包含了设备整个屏幕的大小(bounding rectangle of the device’s entire screen).当你设置程序的UI时,应当使用该对象的属性来获取屏幕大小

+ (UIScreen *)mainScreen
返回表示设备屏幕的screen对象
@property(nonatomic, readonly)  CGRect applicationFrame

用于指定window大小的属性(只读) 一般为(0.0, 20.0, 320.0, 460.0);

@property(nonatomic, readonly) CGRect bounds

Contains the bounding rectangle of the screen, measured in points. (read-only)


给window添加内容
1.每个window都有一个包含了包含了其他视图的根视图,由相应的视图控制器管理。如果需要改变内容,仅仅改变window的根视图即可
[window addSubview:viewController.view];

2.对以上代码,你同样可以设置window的rootViewController属性(nib或者代码)。如果该属性在window载入时被设定,UIKit自动加载该视图控制器的视图到window的根视图。该属性是用来加载根视图的。

3.当配置window的根视图时,你需要负责设置其在window中的大小和位置。如果状态栏透明,将视图大小设置为window的大小,如果状态栏不透明,则将其置于状态栏下方。

4.如果window的根视图时由容器视图控制器,比如tab bar controller, navigation controller, or split-view controller,则你不需要手动设置视图大小。容器视图控制器会自动根据状态栏来设置其视图大小


监视window的变化
1.如果需要在程序内监视window的变化,可以使用一下通知

2.当程序进入后台时,前两个通知并没有发送,因为window在后台仍然是可见的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值