笔记
01-项目中常见的文件-LaunchScreen-.jpg 02-项目中常见的文件-info.plist-.jpg 04-UIApplication单例.jpg 笔记.jpgXmind
Snip20170212_171.png Snip20170212_172.png Snip20170212_173.png Snip20170212_174.png Snip20170212_175.png Snip20170212_176.png Snip20170212_177.png Snip20170212_178.png Snip20170212_179.png Snip20170212_180.png Snip20170212_181.png Snip20170212_182.png Snip20170212_183.pngPPT
1-状态栏
- 从iOS7开始,系统提供了2种管理状态栏的方式
- 通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏)
- 通过UIApplication管理(一个应用程序的状态栏都由它统一管理)
- 在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式
- 状态栏的样式
-(UIStatusBarStyle)preferredStatusBarStyle; - 状态栏的可见性
-(BOOL)prefersStatusBarHidden;
利用UIApplication来管理状态栏 - 利用UIApplication来管理状态栏
-
如果想利用UIApplication来管理状态栏,首先得修改Info.plist的设置
图片 1.png
-
2-iOS程序启动过程
Snip20170212_168.pngUIApplicationMain
- main函数中执行了一个UIApplicationMain这个函数
- int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
argc、argv:直接传递给UIApplicationMain进行相关处理即可 - principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值
- delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议
- UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性
- 接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)
- 程序正常退出时UIApplicationMain函数才返回
3-UIWindow
- 一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow也就说,没有UIWindow,就看不见任何UI界面
- 添加UIView到UIWindow中两种常见方式:
- -(void)addSubview:(UIView *)view;
直接将view添加到UIWindow中,但并不会理会view对应的UIViewController - @property(nonatomic,retain) UIViewController *rootViewController;
自动将rootViewController的view添加到UIWindow中,负责管理rootViewController的生命周期 - 常用方法
- -(void)makeKeyWindow;
让当前UIWindow变成keyWindow(主窗口) - -(void)makeKeyAndVisible;
让当前UIWindow变成keyWindow,并显示出来
UIWindow的获得
- [UIApplication sharedApplication].windows
- 在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象
(平时输入文字弹出的键盘,就处在一个新的UIWindow中)
- 在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象
- [UIApplication sharedApplication].keyWindow
- 用来接收键盘以及非触摸类的消息事件的UIWindow,而且程序中每个时刻只能有一个UIWindow是keyWindow。如果某个UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindow
- view.window
- 获得某个UIView所在的UIWindow
网友评论