IOS笔记之UIApplication
看了关于UIApplication东西,总结一下;
1.什么是UIApplication?
每个应用程序都会有自己的UIApplication,这个对象是个单例对象,是系统自动创建的,并且在程序启动后创建的第一个对象; 获取这个对象时,只能通过[UIApplication shareApplication],不可以用alloc等手动创建;
2.UIApplication功能
当需要进行一些应用级别的操作时可以利用UIApplication:
设置应用程序图标右上角的红色提醒数字
设置联网指示器的可见性
设置应用程序的状态栏
进行应用之间的跳转
3.UIApplication的具体用法
设置应用程序的提醒数字
//获取UIApplication
UIApplication app = [UIApplication sharedApplication];
//注册用户通知
UIUserNotificationSettings setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
[app registerUserNotificationSettings:setting];
//设置提醒数字
app.applicationIconBadgeNumber = 6;
设置之前一定要先注册一个通知,从iOS8之后要先注册一个通知对
象才能接收到提醒
设置网络状态
//获取UIApplication
UIApplication *app=[UIApplication sharedApplication];
//设置网络状态
app.networkActivityIdicatorVisible= YES;
设置状态栏
应用程序的状态栏默认是控制器管理,我们可以重写控制器提供的方法,在控制器中设置状态栏的样式.
//获取UIApplication
UIApplication *app = [UIApplication sharedApplication];
//设置状态栏的样式
app.statusBarStyle = UIStatusBarStyleLightContent;
//设置状态栏隐藏
app.statusBarHidden = YES;
通常在开发中都是用应用程序来管理状态栏的,不然的话,会有多个控制器,会非常麻烦
想让应用程序管理状态栏要在info.plist中进行配置,
添加一个key值:是最后一个,view controller-based status bar appearance 设置为NO就是用应用程序来管理了.
跳转网页
UIApplication *app=[UIApplication shareApplication];
URL:协议头 应用程序是通过协议头的类型,去打开相应的软件
NSURL *url=[NSURLWithString:@"http://www.baidu.com"];
[ap openURL:url];
//打电话
[app openURL:[NSURL URLWithString:@"tel://10086"]];
//发短信
[app openURL:[NSURL URLWithString:@"sms://10086"]];
4.UIApplication代理(delegate)
所有的移动操作系统都个缺点:app很容易被打扰.
如: 一个来电会或者锁屏等会导致app进入后台甚至被终止,当app受到干扰时 会产生一些系统事件,这时UIApplication就会通知他的代理对象,让代理来处理这些系统事件.
其中代理(delegate)可以处理的事件:应用程序的生命周期事件(如程序启动和关闭)系统事件(如来电)内存警告……
UIApplication会在程序一启动时创建一个遵守UIApplication的代理,这 个AppDelegate类就是遵守了UIApplicationDelegate协议,在这个类中定义了很多监听系统的方法,同时也定义了一些应用程序的生命周期 方法
主要方法有:
应用程序的生命周期
应用程序启动完毕的时候调用
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
NSLog(@"%s",func);
return YES;
}
当程序获取焦点时调用(获取焦点就是能够与用户进行交互)
(void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"%s",func);
}
当程序失去焦点是调用- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"%s",func);
}
当程序进入到前台时调用 - (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"%s",func);
}
当程序进入到后台时调用 (void)applicationDidEnterBackground:(UIApplication *)application {
}NSLog(@"%s",__func__);
当应用程序将要终止时调用(void)applicationWillTerminate:(UIApplication *)application {
NSLog(@"%s",func);
}
当程序收到内存警告时调用
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
NSLog(@"%s",func);
//清理缓存方法