第三天 -- UIApplication单例 iOS

1.什么是UIAppication

UIApplication 就是你的应用,也是iOS系统打开程序时,自动创建的第一个对象,我们只能通过UIApplication这个类的方法获得:

//获取UIApplication
UIApplication app = [UIApplication sharedApplication];


2.UIApplication的作用

UIApplication其实是个牛X东西,只要获得他就进行一些应用级别的操作,大概有哪些比较常用的呢?下面我们列举一下

1.可以设置平时在应用程序图标右上角的红色提醒数字(强迫症有毒)


//获取UIApplication对象
UIApplication *ap = [UIApplication sharedApplication];
//在设置之前, 要注册一个通知,从ios8之后,都要先注册一个通知对象.才能够接收到提醒. UIUserNotificationSettings *notice =
[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
//注册通知对象
[ap registerUserNotificationSettings:notice];
//设置提醒数字
ap.applicationIconBadgeNumber = 20;


2.设置联网指示器的可见性(不要以为可以隐藏掉网络信号,移动第一个不放过你!其实只是在4G信号旁显示一个转圈圈【默认隐藏】)

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;


3.设置应用程序的状态栏的状态(这个比较鸡肋,只有两种样式选择【黑色和白色,默认黑色】)

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;.statusBarStyle = UIStatusBarStyleLightContent;

颜色1:


颜色2:


大招:不过苹果也不是不近人情,偷偷给你留了这么一个对象方法:【直接把状态栏干掉】

//设置状态的隐藏

[UIApplication sharedApplication].statusBarHidden = YES;


4.终极大招: 在APP中直接调用系统工具或其他应用:

UIApplication *ap = [UIApplication sharedApplication]; URL:协议头://域名 应用程序通过协议头的类型,去打开相应的软件.
NSURL *url =[NSURL URLWithString:@"http://www.baidu.com"]; [ap openURL:url];
//打电话
[application openURL:[NSURL URLWithString:@"tel://10086"]];
//发短信
[app openURL:[NSURL URLWithString:@"sms://10086"]];

3.开发阶段需要理解: UIApplication代理【涉及到程序的生命周期】

其实在新建程序时就已经生成,在打开XCode的项目栏中AppDelegate:

应用程序启动完成的时候调用【只执行一次】
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions {
return YES;
}
当我们应用程序即将挂起的时候调用【进入后台前的操作】
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"%s",__func__);
}
当我们应用程序【从后台进入前台后操作】
- (void)applicationDidBecomeActive:(UIApplication*)application{    
/*添加你的恢复代码*/    
}    
当我们应用程序完全进入后台的时候调用【从后台进入前台后操作】
- (void)applicationDidEnterBackground:(UIApplication *)application{
NSLog(@"%s",__func__);
}
当我们应用程序即将进?前台的时候调用
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"%s",__func__);}
当我们应用程序完全获取焦点的时候调用
只有当一个应用程序完全获取到焦点,才能与用户交互.
- (void)applicationDidBecomeActive:(UIApplication *)application {
- NSLog(@"%s",__func__);
}
当我们应用程序即将关闭的时候调用【关机,程序终止】
- (void)applicationWillTerminate:(UIApplication *)application {
NSLog(@"%s",__func__);
}

4.程序完整的启动

(1)程序启动,执行Main

(2)执行UIApplicationMain函数.

(3).创建UIApplication对象,并设置UIApplicationMain对象的代理.UIApplication的第三个参数就是UIApplication的名称,如果指定为nil,它会默认 为UIApplication.UIApplication的第四个参数为UIApplication的代理.

(4).开启一个RunLoop主运行循环.保证应用程序不退出.【只有程序在前台就一直运行】

(5).加载info.plist.加载配置文文件.判断一下info.plist文件当中有没有Main storyboard file base name里面有没有指定storyboard文件,如果有就去加载info.plist文件,如果没有,那么应用程序加载完毕.

(6).通知应用程序,调用代理方法


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值