iOS之UIApplication详解
|
|
举例:通过代码获取两个UIApplication对象,打印地址可以看出地址是相同的。
![]() 1 - (void)viewDidLoad {
![]() |
|
打印结果:
2015-12-02 13:34:58.847 01 UIApplication[4563:852645] app1=0x7fe2b3e0eaa0 ---- app2 = 0x7fe2b3e0eaa0
|
|
|
举例:
![]() 1 - (void)viewDidLoad {
![]() |
|
打印结果:
2015-12-02 13:39:00.270 01 UIApplication[4675:867735] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There can only be one UIApplication instance.'
|
|
| (1)应用图标显示数字 (详见1.1 常用属性) |
| (2)状态栏上的等待图标指示器 (详见1.1 常用属性) |
|
(3)利用UIApplication打开某个资源 (openURL:方法)
✓系统会自动根据协议识别使用某个app打开
![]() 1 //打开一个网页 : ![]() ✓使用openURL方法也可以打开其他应用,在不同应用之间互相调用对方。
美图秀秀, 点击分享到"新浪微博", 打开"新浪微博"选择账号, 跳转回"美图秀秀", 开始分享
喜马拉雅, 使用微博、QQ 账号 登录。都需要应用程序间跳转。
|
| (4)通过UIApplication管理状态栏 (详见1.2 管理状态栏) |

1 //应用程序图标右上角的红色提醒数字(默认为0)
2 @property(nonatomic) NSInteger applicationIconBadgeNumber;
3
4 举例:
5
6 - (void)viewDidLoad {
7 [super viewDidLoad];
8
9 //获取单例对象
10 UIApplication *app = [UIApplication sharedApplication];
11
12 // 创建用户通知设置 (iOS8 后要求设置通知的时候必须经过用户许可)
13 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
14 UIUserNotificationSettings *settings =
15 [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge
16 categories:nil];
17 //注册权限
18 [app registerUserNotificationSettings:settings];
19 }
20
21 //设置数字
22 app.applicationIconBadgeNumber = 10;
23
24 }


1 //联网指示器的可见性 (默认为 no)
2 @property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
3 举例:
4
5 - (void)viewDidLoad {
6 [super viewDidLoad];
7
8 //获取单例对象
9 UIApplication *app = [UIApplication sharedApplication];
10
11 //设置网络指示器
12 app.networkActivityIndicatorVisible = YES;
13
14 }


1 //状态栏的样式
2 -(UIStatusBarStyle)preferredStatusBarStyle;
3
4 //状态栏的可见性
5 -(BOOL)prefersStatusBarHidden;
6 // 状态栏可见性(默认为 no) --- UIViewController管理 (推荐使用)
7 - (BOOL)prefersStatusBarHidden {
8 return NO;
9 }
10
11 //状态栏的样式 --- UIViewController管理 (推荐使用)
12 - (UIStatusBarStyle)preferredStatusBarStyle {
13
14 /* 状态栏样式 statusBarStyle
15 UIStatusBarStyleDefault 状态栏为黑色
16 UIStatusBarStyleLightContent 状态栏为白色
17 UIStatusBarStyleBlackTranslucent
18 UIStatusBarStyleBlackOpaque
19 */
20
21 return UIStatusBarStyleDefault;
22 }

|
(1)在ios 7 以后如果要通过UIApplication管理,则首先要在Info.plist文件中增加一个配置项
|
![]() 1 //状态栏的样式 --- UIApplication管理 ![]() |
| UIApplication:状态栏的样式只设置一次,使用动画效果 |
| UIViewController:状态栏是否隐藏,样式不一样 |
|
|
delegate可处理的事件如:
|
|
| 文件位置:Supporting Files —> main.m |
![]() 1 #import <UIKit/UIKit.h> ![]() |
| AppDelegate的主要作用就是处理(监听)应用程序本身的各种事件 |
| 要想成为UIApplication的代理对象, 必须遵守:UIApplicationDelegate协议 |

![]() 1 // AppDelegate.h ![]() |

1 // AppDelegate.m
2
3 #import "AppDelegate.h"
4
5 @interface AppDelegate ()
6
7 @end
8
9 @implementation AppDelegate
10
11 // app启动完成 调用该方法 启动之后,将不再调用此方法!
12 // 如果因为内存等原因,应用程序被操作系统干掉,再次点击图标,会调用此方法!
13 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
14 NSLog(@"%s", __func__);
15 return YES;
16 }
17
18 // app即将退出活动状态的时候调用 (将要失去焦点:不能和用户交互)( 此方法在来电或来短信的时候被调用)
19 // 游戏应该再此方法中暂停游戏进程!此方法在游戏开发中尤为重要!
20 - (void)applicationWillResignActive:(UIApplication *)application {
21 NSLog(@"%s", __func__);
22 }
23
24 // app已经进入后台 调用该方法 (在此方法中保存应用程序的数据和状态)
25 // 应用程序退出到后台,释放共享资源,保存用户数据,停止时钟,保存足够的应用程序状态信息...
26 - (void)applicationDidEnterBackground:(UIApplication *)application {
27 NSLog(@"%s", __func__);
28 }
29
30 // app即将进入前台的时候 调用该方法 (在此方法中还原应用程序的数据和状态)
31 - (void)applicationWillEnterForeground:(UIApplication *)application {
32 NSLog(@"%s", __func__);
33 }
34
35 // app已经进入活动状态, 重新启动原来暂停的状态 (重新获取焦点:可以和用户交互)
36 - (void)applicationDidBecomeActive:(UIApplication *)application {
37
38 NSLog(@"%s", __func__);
39 }
40
41 // app接收到内存警告 调用该方法
42 - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
43 NSLog(@"%s", __func__);
44 }
45
46 // app将要被杀死 调用该方法
47 // 注意:1.用户主动关闭 2.系统因为内存不够关闭了程序
48 - (void)applicationWillTerminate:(UIApplication *)application {
49
50 NSLog(@"%s", __func__);
51 }
52 @end
iOS之UIApplication详解的更多相关文章
- 了解iOS消息推送一文就够:史上最全iOS Push技术详解
本文作者:陈裕发, 腾讯系统测试工程师,由腾讯WeTest整理发表. 1.引言 开发iOS系统中的Push推送,通常有以下3种情况: 1)在线Push:比如QQ.微信等IM界面处于前台时,聊天消息和指 ...
- 转载]IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )
原文地址:IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本作者:佐佐木小次郎 因为最近项目上要用有关LBS的功能.于是我便做一下预研. 一般说来LBS功能一般分为两块:一块是地理 ...
- iOS中-Qutarz2D详解及使用
在iOS中Qutarz2D 详解及使用 (一)初识 介绍 Quartz 2D是二维绘图引擎. 能完成的工作有: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...
- iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)
前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...
- iOS开发——Block详解
iOS开发--Block详解 1. Block是什么 代码块 匿名函数 闭包--能够读取其他函数内部变量的函数 函数变量 实现基于指针和函数指针 实现回调的机制 Block是一个非常有特色的语法,它可 ...
- iOS开发:详解Objective-C runTime
Objective-C总Runtime的那点事儿(一)消息机制 最近在找工作,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题.当然还有一些其他问题也几乎 ...
- iOS应用开发详解
<iOS应用开发详解> 基本信息 作者: 郭宏志 出版社:电子工业出版社 ISBN:9787121207075 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 ...
- iOS开发者证书-详解
iOS开发者证书-详解/生成/使用 本文假设你已经有一些基本的Xcode开发经验, 并注册了iOS开发者账号. 相关基础 加密算法 现代密码学中, 主要有两种加密算法: 对称密钥加密 和 公开密钥加密 ...
- iOS开发-Runtime详解
iOS开发-Runtime详解 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的.比如: [recei ...
随机推荐
- Android自定义View 画弧形,文字,并增加动画效果
一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类 B ...
- DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践(1)
好久没写 DDD 领域驱动设计相关的文章了,嘎嘎!!! 这几天在开发一个新的项目,虽然不是基于领域驱动设计的,但我想把 DDD 架构设计的一些东西运用在上面,但发现了很多问题,这些在之前的短消息项目中 ...
- Last-Modified、If-Modified-Since 实现缓存和 OutputCache 的区别
先梳理三个概念: OutputCache:页面输出缓存,一般 ASP.NET 应用程序会用到. Last-Modified:Http 响应头(Http Reponse Header),由服务器发给客户 ...
- CSS3的flex布局
flex的一些属性 CSS3中引入了另一种框--flexbox,flexbox有一些block和inline不同的性质,比如: 自适应子元素(flex item,又称伸缩项目)的宽度 伸缩项目的flo ...
- SSH整合时执行hibernate查询报错:java.lang.ClassCastException: com.ch.hibernate.Department_$$_javassist_0 cannot be cast to javassist.util.proxy
今天在整合ssh三个框架时,有一个功能,是查询所有员工信息,且员工表和部门表是多对一的映射关系,代码能正常运行到查询得到一个List集合,但在页面展示的时候,就报异常了, java.lang.Clas ...
- Kooboo CMS - 之后台注册用户流程方法。
今天决定写一篇好一点的文章,吼吼!首先我们必须找到这个文件,这个文件是UsersController.cs,我们找到和添加新用户有关的方法,如下代码: public virtual ActionRes ...
- 魔方渗透系统安装VMtools教程
虚拟机魔方渗透系统安装VMtools教程 1.开机登陆后,如图点击安装VMtools. 2.进入media文件夹: cd /media 查看mdia文件夹内容: ls 3.打开VMware T ...
- 网页开发中文本编辑器UEditor的使用
首先看一下效果图: 首先我们需要来认识下UEditor,它是由百度web前端研发部开发所见即所得富文本web编辑器,并且是基于BSD协议的开源产品,允许自由使用和修改,开源就意味着可以自己来定制这个编 ...
- 详解Javascript的继承实现
我最早掌握的在js中实现继承的方法是在w3school学到的混合原型链和对象冒充的方法,在工作中,只要用到继承的时候,我都是用这个方法实现.它的实现简单,思路清晰:用对象冒充继承父类构造函数的属性,用 ...
- C#获取图片的后缀名
最近在学习过程中遇到一个问题,就是如何获取图片的格式,对于一张知道全路径的照片,如果其路径包含后缀名的话,要取得后缀名,只需要一行代码即可: var ext = System.IO.Path.GetE ...