iOS大神班笔记03-UIApplication
UIApplication简介:
- UIApplication对象是应用程序的象征。
- 每一个应用程序都有自己的UIApplication对象,而且是单例。
- 一个iOS程序启动后创建的第一个对象就是UIApplication对象。
- 通过
UIApplication *app = [UIApplication sharedApplication];
可以获得这个单例对象。 - 利用UIApplication对象能进行一些应用级别的操作。
利用UIApplication对象能进行一些应用级别的操作。
- 设置应用程序图标右上角的红色提醒数字
- @property(nonatomic) NSInteger applicationIconBadgeNumber;
- //代码实现和效果
- UIApplication *app = [UIApplication sharedApplication];
- app.applicationIconBadgeNumber = ;
- // 创建通知对象
- UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
- // 注册用户通知
- [app registerUserNotificationSettings:setting];
注:苹果为了增强用户体验,在iOS8以后我们需要创建通知才能实现图标右上角提醒,iOS8之前直接设置
applicationIconBadgeNumber
的值即可。 - @property(nonatomic) NSInteger applicationIconBadgeNumber;

- 设置联网指示器的可见性
- @property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL
- networkActivityIndicatorVisible;
- //代码实现和效果
- app.networkActivityIndicatorVisible= YES;
联网指示器显示效果图 - @property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL
管理状态栏
从iOS7开始,系统提供了2种管理状态栏的方式
a.通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏)在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式状态栏的样式 - (UIStatusBarStyle)preferredStatusBarStyle;
状态栏的可见性 -(BOOL)prefersStatusBarHidden;
#pragma mark-设置状态栏的样式
-(UIStatusBarStyle)preferredStatusBarStyle
{
//设置为白色
//return UIStatusBarStyleLightContent;
//默认为黑色
return UIStatusBarStyleDefault;
}
#pragma mark-设置状态栏是否隐藏(否)
-(BOOL)prefersStatusBarHidden
{
return NO;
}
b.通过UIApplication管理(一个应用程序的状态栏都由它统一管理)如果想利用UIApplication来管理状态栏,首先得修改Info.plist的设置,添加选中行,并设置为NO即可,这篇文章中有详细介绍iOS中用application 来管理电池栏状态
Info.plist的设置代码:
//通过sharedApplication获取该程序的UIApplication对象
UIApplication *app=[UIApplication sharedApplication];
//设置状态栏的样式
//app.statusBarStyle=UIStatusBarStyleDefault;//默认(黑色)
//设置为白色+动画效果
[app setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
//设置状态栏是否隐藏
app.statusBarHidden=YES;
//设置状态栏是否隐藏+动画效果
[app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
c.总结
如果状态栏的样式只设置一次,那就用UIApplication来进行管理,并且UIApplication可以提供动画效果;
如果状态栏是否隐藏,样式不一那就用每个控制器对自己的状态栏进行管理。openURL:方法
UIApplication有个功能十分强大的openURL:方法- (BOOL)openURL:(NSURL*)url;
openURL:方法的部分功能有UIApplication *app = [UIApplicationsharedApplication];
打电话 [app openURL:[NSURLURLWithString:@"tel://110"]];
发短信 [app openURL:[NSURLURLWithString:@"sms://10086"]];
发邮件 [app openURL:[NSURLURLWithString:@"mailto://xxcc@fox.com"]];
打开一个网页资源 [app openURL:[NSURL URLWithString:@"http://www.baidu.com"]];
打开其他app程序 openURL方法,可以打开其他APP。
系统内部根据不同的头标示来做出不同的相应。
判断程序运行状态
//判断程序运行状态
/*
UIApplicationStateActive,
UIApplicationStateInactive,
UIApplicationStateBackground
*/
UIApplication *app = [UIApplication sharedApplication];
if(app.applicationState ==UIApplicationStateInactive){
NSLog(@"程序在运行状态");
}
- 阻止屏幕变暗进入休眠状态
//阻止屏幕变暗,慎重使用本功能,因为非常耗电。
UIApplication *app = [UIApplication sharedApplication];
app.idleTimerDisabled =YES;
UIApplication Delegate
当app收到干扰,例如程序运行中来电等,就会产生一些系统事件,这时UIApplicaiton会通知它的代理delegate对象,让delegate代理来处理这些系统事件。
delegate可以处理的时间包括
1.应用程序的生命周期事件(如程序启动和关闭)
2.系统事件(如来电)
3.内存警告(用处较多)
每当我们创建项目时,程序中的AppDelegate文件就是UIAppliacation的代理,我们可以发现它已经遵守了UIApplicationDelegate。
@interface AppDelegate : UIResponder <UIApplicationDelegate>
下面我们来看一下AppDelegate的方法
// AppDelegate:监听应用程序的生命周期
// 以下方法就是应用程序的生命周期方法
// 应用程序启动完成的时候就会调用AppDelegate的方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"%s",__func__);
return YES;
}
// 当应用程序失去焦点的时候调用
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"%s",__func__);
}
// 当应用程序进入后台的时候调用
- (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 {
}
//收到内存警告时调用
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application{
}
iOS大神班笔记03-UIApplication的更多相关文章
- iOS大神班笔记04-View的加载
iOS开发中一个控制器创建View的过程(注意标注的地方): 1.通过storyboard加载 UIStoryboard的三个方法: + (UIStoryboard *)storyboardWithN ...
- iOS大神班笔记02-模仿苹果创建单例
首先我们得要知道苹果是如何实现单例的:1.不能外界调用alloc,一调用就崩掉,其实就是抛异常(类内部第一次调用alloc就不崩溃,其他都崩溃). 2.提供一个方法给外界获取单例. 3.内部创建一次 ...
- iOS大神班笔记01-项目中常见的文件
1.Info.plist文件:项目配置文件 主要作用:保存应用的信息,软件名称等等,相当于身份 证.程序加载首先加载配置文件,读取软件名称等信息. Bundle display name:项目名称 B ...
- 李洪强iOS学习交流群-iOS大神群
iOS学习大神群-群号:483959373
- iOS组件化思路-大神博客研读和思考
一.大神博客研读 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的 ...
- 爱了!阿里大神最佳总结“Flutter进阶学习笔记”,理论与实战
前言 "小步快跑.快速迭代"的开发大环境下,"一套代码.多端运行"是很多开发团队的梦想,美团也一样.他们做了很多跨平台开发框架的尝试:React Native. ...
- 【同行说技术】iOS程序员从小白到大神必读资料汇总
在文章<iOS程序员从小白到大神必读资料汇总(一)>里面介绍了很多iOS入门学习的资料,今天小编就发几篇技术进阶的文章,快来看看吧! 一.iOS后台模式开发指南 这个教程会教你在什么时候怎 ...
- 老猪带你玩转自定义控件三——sai大神带我实现ios 8 时间滚轮控件
ios 8 的时间滚轮控件实现了扁平化,带来很好用户体验,android没有现成控件,小弟不才,数学与算法知识不过关,顾十分苦恼,幸好在github上找到sai大神实现代码,甚为欣喜,顾把学习这个控件 ...
- 李洪强iOS开发之大神必备的Xcode插件
iOS开发大神必备的Xcode插件 写在前面 工欲善其事,必先利其器,iOS开发中不仅要学会Xcode的基本操作,而且还得学会一些Xcode的使用技巧,如掌握常用的快捷键等,还有就是今天要说到的Xco ...
随机推荐
- 前端JavaScript之ECMA
1.JavaScript基础 2.语法规则 3 常用内置对象 4 函数 5 伪数组 6.异常处理 1.1 web前端分为三层 HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化 ...
- 深入浅出:了解jsonp跨域的九种方式
什么是“”跨域”: 跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容.由于安全原因,跨域访问是被各大浏览器所默认禁止的.当一个域与其他域建立了信 ...
- 基于mybatis设计简单OA系统问题1
全类名与全路径 全类名是某个文件在项目中的位置,格式为包名.类名 路径分为相对路径和绝对路径. 绝对路径是指这个文件在操作系统中的位置, 相对路径通过这个文件的上一级 ./ 或下一级/ 来指定文件 ...
- zeppelin ERROR总结
ERROR [2017-03-23 20:01:50,799] ({qtp331657670-221} NotebookServer.java[onMessage]:221) - Can't hand ...
- 转:Java后端面试自我学习
引自:https://www.cnblogs.com/JavaArchitect/p/10011253.html 最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前 ...
- css页面出现滚动条左右跳动
问题描述:页面首次加载的时候内容是一屏,不会出现纵向滚动条,但是当点击加载的内容更多时页面会出现左右跳动一下的情况.出现跳动的主要原因就是出现了滚动条,滚动条的宽度影响了内容区域的宽度. 1.查看导航 ...
- Python 编码格式的使用
编码史 ASCII > Unicode > UTF-8 Unicode支持多语言,UTF-8自动转换长短细节节省空间 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传 ...
- POJ 2079 最大三角形面积(凸包)
Triangle Description Given n distinct points on a plane, your task is to find the triangle that have ...
- HNU暑假训练第一场C.Ninja Map
一.题目大意 Intersections of Crossing Path City are aligned to a grid. There are N east-west streets whic ...
- sql查询作业答案
sql查询作业答案 阅读目录 一 题目 二 答案 一 题目 1.查询所有的课程的名称以及对应的任课老师姓名 2.查询学生表中男女生各有多少人 3.查询物理成绩等于100的学生的姓名 4.查询平均成 ...