UIApplication
- 简单介绍
- UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。
- 每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。
- 通过
[UIApplication sharedApplication]
可以获得这个单例对象 - 一个iOS程序启动后创建的第一个对象就是UIApplication对象,且只有一个(通过代码获取两个UIApplication对象,打印地址可以看出地址是相同的)。
- 利用UIApplication对象,能进行一些应用级别的操作
-
2.应用级别的操作示例:
-
设置应用程序图标右上角的红色提醒数字(如QQ消息的时候,图标上面会显示1,2,3条新信息等)
UIApplication * app = [UIApplication sharedApplication]; // 设置appIcon提醒数字,必须注册用户通知 app.applicationIconBadgeNumber = 10; // 创建用户通知 UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil]; // 注册用户的通知 [app registerUserNotificationSettings:settings];
-
设置联网指示器的可见性
// 设置联网状态 app.networkActivityIndicatorVisible = YES;
-
管理状态栏
从iOS7开始,系统提供了2种管理状态栏的方式
-
通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏)
-
在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式
#pragma mark-设置状态栏的样式 -(UIStatusBarStyle)preferredStatusBarStyle { //设置为白色 //return UIStatusBarStyleLightContent; //默认为黑色 return UIStatusBarStyleDefault; } #pragma mark-设置状态栏是否隐藏(否) -(BOOL)prefersStatusBarHidden { return NO; }
-
通过UIApplication管理(一个应用程序的状态栏都由它统一管理)
-
如果想利用UIApplication来管理状态栏,首先得修改Info.plist的设置
-
-
/设置状态栏的样式 app.statusBarStyle=UIStatusBarStyleDefault;//默认(黑色) //设置为白色+动画效果 [app setStatusBarStyle:UIStatusBarStyleLightContent animated:YES]; //设置状态栏是否隐藏 app.statusBarHidden=YES; //设置状态栏是否隐藏+动画效果 [app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
-
-
- 补充:
- 既然两种都可以对状态栏进行管理,那么什么时候该用什么呢?
- 如果状态栏的样式只设置一次,那就用UIApplication来进行管理。
- 如果状态栏是否隐藏,样式不一样那就用控制器进行管理。
- UIApplication来进行管理有额外的好处,可以提供动画效果。
- 补充:
-
openURL:方法
-
UIApplication有个功能十分强大的openURL:方法
- (BOOL)openURL:(NSURL*)url;
-
openURL:方法的部分功能有
- 打电话
UIApplication *app = [UIApplicationsharedApplication];
[app openURL:[NSURLURLWithString:@"tel://10086"]]; - 发短信
[app openURL:[NSURLURLWithString:@"sms://10086"]];
- 发邮件
[app openURL:[NSURLURLWithString:@"mailto://12345@qq.com"]];
- 打开一个网页资源
[app openURL:[NSURLURLWithString:@"http://www.baidu.com"]];
-
打开其他app程序 openURL方法,可以打开其他APP。
-
URL补充:
- URL:统一资源定位符,用来唯一的表示一个资源。
- URL格式:协议头://主机地址/资源路径
- 网络资源:http/ ftp等 表示百度上一张图片的地址http://img.pusa123.com/www/uploads/allimg/160415/14814_160415125627_1.jpg
- 本地资源:file:// /Users/haoqing/Desktop/笔记/images/Snip20150602_298.png
- 打电话
-
-
二、程序启动的完整过程
1.main函数
2.UIApplicationMain
-
创建UIApplication对象
-
创建UIApplication的delegate对象
3.delegate对象开始处理(监听)系统事件(没有storyboard)
-
程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法
-
在application:didFinishLaunchingWithOptions:中创建UIWindow
-
创建和设置UIWindow的rootViewController
-
显示窗口
3.根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard)
-
创建UIWindow
-
创建和设置UIWindow的rootViewController
-
显示窗口