在iOS的操作系统中 每一个程序都对应一个application单例,每一个application都对应一个Appdelegate代理,在代理中控制程序的各个状态。我们在程序中获取Application单例:[UIApplication sharedApplication].当进行有关该应用的相关操作设置时需要获取,进行响应的操作。比如:

1、应用之间的调用和跳转

打开电话:[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:[NSStringstringWithFormat:@"tel://%@",_PersonPhoneStr]]];

打开邮箱:[[UIApplication sharedApplication] openURL:[NSURLURLWithString:@"mailto://devprograms@apple.com"]];打开短信:[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"sms://466453"]];

打开浏览器[[UIApplication sharedApplication] openURL:[NSURLURLWithString:@"http://itunesconnect.apple.com"]];

也可以打开自己指定的程序:首先必须要知道要打开的程序所制定的url协议,然后再本程序中调用以下方法:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"要打开的软件协议名称://"]];

比如:创建A程序,我在A程序中的info.plist中制定对外程序打开A程序的url协议:

然后再A程序的appdelegate中实现:

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{

if([[url

scheme] isEqualToString:@"myapp"]){

return

YES;

}

return

NO;

}。在B程序中调用以下方法打开A程序:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"myapp://"]];

如果想传参数直接在//后面加就可以。

2、设置appIcon图标上的红色提示数字。

在ios8以后加入了用户权限的判断,在程序启动时首先执行:

float version = [[[UIDevice currentDevice] systemVersion] floatValue];

if (version >= 8.0) {

UIUserNotificationSettings *settings = [UIUserNotificationSettingssettingsForTypes:UIUserNotificationTypeBadge categories:nil];

[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

}

然后在程序任何地方可以通过以下代码设置角标:

UIApplication *app=[UIApplication sharedApplication];

app.applicationIconBadgeNumber=123;

当使用推送时相应的应该会有一个全局变量表示当前角标的数量,当在后台收到推送时应该在+1,当程序打开时应该把此角标变量设置为0.
 
3、在状态栏中显示网络加载。

UIApplication *app=[UIApplication sharedApplication];

app.networkActivityIndicatorVisible=YES;

4、管理状态栏

iOS中管理状态栏有两种方式:1、使用UIApplication进行全局设置:首先在info.plist的文件中加入: 然后在程序中调用以下代码:

UIApplication *app=[UIApplication sharedApplication];

[app setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];

2、在每个界面中都可以对状态栏进行控制:在Viewcontroller中重写以下两个方法:

#pragma mark-设置状态栏的样式

-(UIStatusBarStyle)preferredStatusBarStyle

{

//设置为白色

//return UIStatusBarStyleLightContent;

//默认为黑色

return UIStatusBarStyleDefault;

}

#pragma mark-设置状态栏是否隐藏(否)

-(BOOL)prefersStatusBarHidden

{

return YES;

}

iOS中浅淡UIApplication单例-b的更多相关文章

  1. 作为UIApplication单例对象的方法 openURL方法的变化

    作为UIApplication单例对象的方法 openURL: 在iOS开发中经常用来实现在当前应用打开外部链接的需求比如跳转到其他应用,跳转应用隐私设置界面;还有相关API canOpenURL:  ...

  2. 关于UIApplication单例传值

    由于UIApplication的是一个系统级别的单例,那么就能够省去自己创建单例的方法,将需要需要的类对象,在UIApplication单例内声明一个,通过点语法来实现单个 需要调用的实现单例模式的类 ...

  3. RPCZ中的智能指针单例

    RPCZ中的智能指针单例 (金庆的专栏) 智能指针单例应用于 RPCZ 库以实现库的自动初始化与自动清理. RPCZ: RPC implementation for Protocol Buffers ...

  4. spring中如何向一个单例bean中注入非单例bean

    看到这个题目相信很多小伙伴都是懵懵的,平时我们的做法大都是下面的操作 @Component public class People{ @Autowired private Man man; } 这里如 ...

  5. iOS 页面间传值 之 单例传值 , block 传值

    ios 页面间传值有许多,前边已经分享过属性传值和代理传值,今天主要说一下单例传值和 block 传值 单例传值:单例模式一种常用的开发的模式,单例因为在整个程序中无论在何时初始化对象,获取到的都是同 ...

  6. 【iOS】ARC-MRC下的单例及其应用

    单例的应用十分普遍,单例模式使一个类仅仅有一个实例. *易于供外界訪问. *方便控制实例个数,节约系统资源. *OC中的常见单例: 如:UIApplication,  NSNotificationCe ...

  7. IOS设计模式第二篇之单例设计模式

    现在我们的组件已经有组织了.你需要从其他的地方得到数据,你也可以创建一个API类管理数据这个下个设计模式单例里面介绍. 这个单例设计模式确保这个类仅仅拥有一个实例,并且为这个实例提供一个全局的访问点. ...

  8. c++单例模式为什么不在析构函数中释放静态的单例对象(转)

    需要清楚一下几点:   1.单例中的 new 的对象需要delete释放.   2.delete释放对象的时候才会调用对象的析构函数.   3.如果在析构函数里调用delete,那么程序结束时,根本进 ...

  9. springmvc中的controller是单例的

    今天发现spring3中的controller默认是单例的,若是某个controller中有一个私有的变量a,所有请求到同一个controller时,使用的a变量是共用的,即若是某个请求中修改了这个变 ...

随机推荐

  1. ELK Packetbeat 部署指南(15th)

    原文链接:http://www.ttlsa.com/elk/elk-packetbeat-deployment-guide/ Packetbeat 是一个实时网络数据包分析工具,与elasticsea ...

  2. List<Map<String,String>>操作(遍历,比较)

    1.List<Map<String,String>>的遍历: Map<String,String> map = new HashMap<String, Str ...

  3. flash引入

    博客页面引入一个小人的动画时钟代码 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase ...

  4. 【Android - 框架】之Fresco的使用

    当下有很多图片加载框架,常见的有Glide.Fresco.Picasso等.Glide因为其体积小.缓存机制强大等优点,受到了广大程序员的青睐:Fresco虽然体积比较大,缓存机制也没有Glide强大 ...

  5. android ui定义自己的dialog(项目框架搭建时就写好,之后事半功倍)

    自定义一个dialog: 之前有很多博客都有过这方面的介绍,可是个人觉得通常不是很全面,通用性不是很强,一般会定义一个自己的dialog类,然后去使用,难道每一个dialog都要定义一个class吗? ...

  6. android 36 线程通信

    安卓中一个程序跑起来叫进程,进程中至少有一个主线程.主线程用于处理用户的触摸操作和将触摸操作事件分发给响应的控件.如果进行消耗时间操作,下载,磁盘读取文件,不润许在主线程操作,只能在工作线程操作.主线 ...

  7. mysql 时区 , 夏令时,冬令时

    mysql默认时区: mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_nam ...

  8. TCP SOCKET中backlog参数的用途是什么? ---图解

    recv_queue中的包大小,为内核的包大小,而不是ip包大小. 如果发出去的包太大,需要修改write_queue和tx_queue两个参数,tx_queue主要是流量控制. 多进程必须在sock ...

  9. phpnow安装教程

    点评:搭建 PHP 其实不很难,只是有点繁琐.要是自己搭建一次 PHP + MySQL 环境很是费时.更糟的是,很多新手在配置 PHP 时常常出现这样那样的问题.诸如 mysql 扩展.zend 安装 ...

  10. [转] 学习React Native必看的几个开源项目

    http://www.lcode.org/study-react-native-opensource-one/ http://gold.xitu.io/entry/575f498c128fe10057 ...