iOS UIApplication以及状态栏显隐
一个应用程序只有一个application对象,application是单例的。
一个应用程序启动后船创建的第一个对象是UIApplication对象
利用UIApplication对象,能进行一些应用级别的操作。
UIApplication *app = [UIApplication sharedApplication];
// 20代表清除图标右上角的数字 app.applicationIconBadgeNumber = 20; // 设置显示联网状态 app.networkActivityIndicatorVisible = YES;
UIApplication有个功能十分强大的openURL:方法 - (BOOL)openURL:(NSURL*)url;
// URL : 一个资源的唯一路径 // URL的组成 == 协议头://主机域名/路径 // 网络资源URL的组成 == http://www.baidu.com/1.png // 本地文件资源URL的组成 == file:///Users/apple/Desktop/1.png [app openURL:[NSURL URLWithString:@"http://www.baidu.com"]];
openURL:方法的部分功能有 打电话 UIApplication *app = [UIApplication sharedApplication]; [app openURL:[NSURL URLWithString:@"tel://10086"]]; 发短信 [app openURL:[NSURL URLWithString:@"sms://10086"]]; 发邮件 [app openURL:[NSURL URLWithString:@"mailto://12345@qq.com"]]; 打开其他app程序
从iOS7开始,系统提供了2种管理状态栏的方式 通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏) 通过UIApplication管理(一个应用程序的状态栏都由它统一管理)
在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式 状态栏的样式 - (UIStatusBarStyle)preferredStatusBarStyle; 状态栏的可见性 - (BOOL)prefersStatusBarHidden;
- (BOOL)prefersStatusBarHidden;
iOS7以后如果想使用UIApplication全局管理状态栏,不仅写以下代码外,还要在plist里面增加下图红框内属性,设置为NO,(此时prefer的方法会失效,只有设置为yes才会掉用perfer方法)。
// app.statusBarHidden = YES; 设置隐藏 // app.statusBarStyle = UIStatusBarStyleLightContent; //设置为白色
// [app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; 设置带动画隐藏 // [app setStatusBarStyle:UIStatusBarStyleLightContent animated:YES]; 设置风格