1,一个程序只有一个UIApplication
//获取
UIApplication *app = [UIApplication sharedApplication];
//错误获取
UIApplication *app = [[UIApplication alloc] init];
//UIApplication是单例的,如果试图在程序中新建一个UIApplication对象,那么将提示报错
2,使用获取的UIApplication,可以进行一些应用级别操作(app图标的提醒框,联网状态显示,打电话,打开网页,控制状态栏)
//app图标的提醒框(图标上提示有信息的小红点)
app.applocationIconBadgeNumber = 10; //10为提醒数字
//实现上述方法,必须注册用户通知:
//创建用户通知
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
//注册用户的通知
[app registerUserNotificationSettings: settings];
//设置联网状态
app.networkActivityIndicatorVisible = YES;
//打开网页
NSURL *url = [NSURL URLWithString: @"http://www.baidu.com"];
[[UIApplication sharedApplication] openURL: url];
//协议头 :http,https,file,tel
//控制状态栏
//ios7以后,状态栏默认由控制器决定,所以:
// (1)将info.plist文件的View controller-based status bar appearance设置为NO时,在控制器中对状态栏的控制都将无效
//隐藏状态栏
[app setStatusBarHidden: YES];
//设置状态栏的字体颜色模式
[app setStatusBarStyle:UIStatusBarStyleLightContent];
//设置隐藏状态栏动画
[app setStatusBarHidden: YES withAnimation: UIStatusBarAnimationSlide];
// (2)将info.plist文件的View controller-based status bar appearance设置为YES时,UIApplication修改控制栏无效,需要在控制器(ViewController)中添加方法
//是否隐藏状态栏
- (BOOL)prefersStatusBarHidden {
return YES;
}
//设置状态栏字体颜色
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
3,UIApplicationDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//程序启动完成时调用
}
- (void)applicationWillResignActive:(UIApplication *)application {
//程序失去焦点时调用 意味着不能和用户交互
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
//程序进入后台时调用
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
//程序即将进入前台时调用
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
//程序获取焦点时调用 可以和用户交互
}
- (void)applicationWillTerminate:(UIApplication *)application {
//程序被关闭时调用 此方法无法验证
}
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
//程序接收到内存警告时调用
}
/*
程序运行时,调用顺序为:
1 application:didFinishLaunchingWithOptions:
2 applicationDidBecomeActive:
先进入程序,然后获取焦点,此时用户可以进行点击等交互操作
*/
/*
按压Home键:
1 applicationWillResignActive:
2 applicationDidEnterBackground:
先失去焦点,不能交互,然后程序进入后台
*/
/*
再次进入程序:
1 applicationWillEnterForeground:
2 applicationDidBecomeActive:
先调用即将进入前台方法,之后进入程序,获取焦点
*/