(1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。
(2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。
(3)通过[UIApplicationsharedApplication]可以获得这个单例对象
(4) 一个iOS程序启动后创建的第一个对象就是UIApplication对象,且只有一个(通过代码获取两个UIApplication对象,打印地址可以看出地址是相同的)。
(5)利用UIApplication对象,能进行一些应用级别的操作
2.应用级别的操作示例:
1)设置应用程序图标右上角的红色提醒数字(如QQ消息的时候,图标上面会显示1,2,3条新信息等。)
@property(nonatomic) NSInteger applicationIconBadgeNumber;
代码实现和效果:
- (void)viewDidLoad { [super viewDidLoad]; //创建并添加一个按钮 UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(100, 100, 60, 30)]; [btn setTitle:@"按钮" forState:UIControlStateNormal]; [btn setBackgroundColor:[UIColor brownColor]]; [btn addTarget:self action:@selector(onClick) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn]; } -(void)onClick { NSLog(@"按钮点击事件"); //错误,只能有一个唯一的UIApplication对象,不能再进行创建 // UIApplication *app=[[UIApplication alloc]init]; //通过sharedApplication获取该程序的UIApplication对象 UIApplication *app=[UIApplication sharedApplication]; app.applicationIconBadgeNumber=123; }
2)设置联网指示器的可见性
@property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
代码和效果:
//设置指示器的联网动画 app.networkActivityIndicatorVisible=YES;
3)管理状态栏
从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的设置
代码:
//通过sharedApplication获取该程序的UIApplication对象 UIApplication *app=[UIApplication sharedApplication]; app.applicationIconBadgeNumber=123; //设置指示器的联网动画 app.networkActivityIndicatorVisible=YES; //设置状态栏的样式 //app.statusBarStyle=UIStatusBarStyleDefault;//默认(黑色) //设置为白色+动画效果 [app setStatusBarStyle:UIStatusBarStyleLightContent animated:YES]; //设置状态栏是否隐藏 app.statusBarHidden=YES; //设置状态栏是否隐藏+动画效果 [app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
4)openURL:方法
UIApplication有个功能十分强大的openURL:方法
- (BOOL)openURL:(NSURL*)url;
openURL:方法的部分功能有
打电话 UIApplication *app = [UIApplicationsharedApplication]; [app openURL:[NSURLURLWithString:@"tel://10086"]];
发短信 [app openURL:[NSURLURLWithString:@"sms://10086"]];
发邮件 [app openURL:[NSURLURLWithString:@"mailto://12345@qq.com"]];
打开一个网页资源 [app openURL:[NSURLURLWithString:@"http://ios.itcast.cn"]];
打开其他app程序 openURL方法,可以打开其他APP。