单例 对象UIApplication

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);
//清理缓存方法

posted @ 2016-04-28 17:15  天灰灰  阅读(239)  评论(0编辑  收藏  举报