UIApplication

UIApplication


UIApplication对象是应用程序的象征 .
每一个应用程序都有自己的 UIApplication对象,而且是单例的.
通过 [UIApplication sharedApplication]可以获得这个单例对象
一个iOS程序启动后创建的第一个对象就是 UIApplication 对象
利用 UIApplication 对象,能进行一些应用级别的操作 


代码,验证单例:
 
-(void)viewDidLoad
{
	[super viewDidLoad]
	UIApplication *app = [UIApplication sharedApplication];
	UIApplication *app2= [UIApplication sharedApplication];
	UIApplication *app3= [[UIApplication alloc] init];
	NSLog(@"%p,%p,%p",app,app2,app3);


}



首先会报错 'There can only be one UIApplication instance'
将 app3 注释之后,打印结果:
0x8d192c0 0x8d192c0




可是看出,地址是相同的 .




 应用级别的几个常用操作:


// 1 图标右上角的数字
UIApplication *app = [UIApplication sharedApplication];


//0代表清除图标右上角的数字
app.applicationIconBadgeNumber =0 ; 




//2  设置显示联网状态
 
app.networkActivityIndicatorVisible = YES ;




会出现"转动的菊花"
 


// 3 . openURL 


URL 是一个资源的唯一路径
URL 的组成 == 协议头://主机域名/路径
网络资源URL的组成 == http://主机域名/路径


示例:
  http://www.baidu.com/adb/images/1.png
 
 
本地的 , 协议头是 file  由于是本地, 主机域名可以不写 .


本地文件资源URL的组成  file:///Users/apple/Desktop/1.png
 
注意上面是三个 ///
 
[app openURL:[NSURL URLWithString:@"http://ios.itcast.cn"]]; 
以上代码会调用 safri打开网址 
如果是图片什么的, 会自动调用相应的程序 ,以上是 http的,所以用 safri
 
[app openURL:[NSURL URLWithString:@"tel://10086"]]; 
以上是打给 10086


其他一些 openURL的示例:
-(BOOL)openURL:(NSURL*)url;




>打电话
[app openURL:[NSURL URLWithString:@"tel://10086"]];


>发短信
[app openURL:[NSURL URLWithString:@"sms://10086"]];


>发邮件
[app openURL:[NSURL URLWithString:@"mailto://10086"]]; 


>打开网页资源
[app openURL:[NSURL URLWithString:@"http://www.baidu.com"]];


>打开其他程序
4 .管理状态栏


从iOS7开始 ,系统提供了2种管理状态栏的方式


 > 通过UIViewController管理(每一个UIViewController都可以拥有不同的状态栏)
 > 通过UIApplication管理(一个应用程序的状态栏都由它统一管理)
 
 默认情况下,是由 UIViewController进行管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式
 
 >状态栏的样式
 -(UIStatusBarStyle)perferredStatusBarStyle;


 
 使用 UIApplication
 app.statusBarHidden = YES;
 app.statusBarStyle = UIStatusBarStyleLightContent;


 
 但是以上代码没有效果, 因为ios7默认给控制器管理 ,如果想给 UIApplication管理 ,到 info.plist中
 
 添加:
 View controller-based status bar apperence  
 value 给定为 NO 
 这样既可不让控制器管理状态栏
 

 
但是以上代码没有效果, 因为ios7默认给控制器管理 ,那我真的想给 application管理呢?


到 info.plist里面 


新加一个 
 
value 是 NO ,这样即可 不让控制器管理状态栏


再次运行就好了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值