UIApplication实用方法
前言:
本文介绍的方法每一个人在项目都应用过,只是有的时候容易忘记每次都要去百度。因为有些方法在整个项目中可能就只会写一次,基于此我只是做个笔记。
1. 每一个应用程序都有一个UIApplication对象,是一个单例。在程序中只能通过[UIApplication sharedApplication]来获得这个单例对象,不能通过alloc去新建一个UIApplication对象
2. 利用UIApplication可以进行的应用级别操作举例
(1)设置应用程序图标右上角的红色提醒数字(applocationIconBadgeNumber)
实例代码:
//获取到应用程序中UIApplication单例对象
//设置应用程序图标右上角的红色提醒数字
// 获取当前应用程序的UIApplication对象
UIApplication *app = [UIApplication sharedApplication];
[UIApplication sharedApplication].applicationIconBadgeNumber = @"20";
//在IOS8以后要想设置applicationIconBadgeNumber,需要用户的授权,在IOS8以后,需要加上下面的代码
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
if (version >= 8.0) {
UIUserNotificationSettings * settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
[app registerUserNotificationSettings:settings];
}
效果图:
(2)设置联网指示器的可见:
netWworkActivityIndicatorVisible
实例代码:
设置联网指示器可见
app.networkActivityIndicatorVisible = YES;
效果图:
(3)管理状态栏
从iOS7开始,系统提供了2种管理状态栏的方式
a.通过UIViewController管理(这意味着每一个UIViewController都可以拥有自己不同的状态栏)
在iOS7以后默认情况下,状态栏都是由UIViewController管理的,通过实现以下两个方法:
状态样式:- (UIStatusBarStyle)preferredStatusBarStyle;
状态栏的可见性: - (BOOL)prepersStatusBarHidden;
实例代码:
-
(UIStatusBarStyle)preferredStatusBarStyle{
//UIStatusBarStyleDefault //默认,黑色
//UIStatusBarStyleLightContent //白色
return UIStatusBarStyleLightContent;
}
//状态栏是否隐藏
- (BOOL)prefersStatusBarHidden{
return YES;
}
效果图:
通过UIApplication管理(一个应用程序的所有界面的状态栏都由它统一管理)
如果想利用UIApplication来管理状态栏,首先得修改Info.plist的设置(添加属性View controller-based status bar appearance 并且设置其BOOL值为NO),然后在程序中实现以下代码:
//设置状态栏的样式
app.statusBarStyle = UIStatusBarStyleDefault; //默认(黑色)
//白色
app.statusBarStyle = UIStatusBarStyleLightContent;
//设置是否隐藏状态栏
app.statusBarHidden = NO;
//系统方法,当从tabbar push过来的时候不隐藏tabbar
- (BOOL)hidesBottomBarWhenPushed{
return NO;
}
#pragma mark - 禁止横屏幕
- (BOOL)shouldAutorotate
{
return NO;
}
(4)openURL:方法
UIApplication有个功能十分强大的openURL:方法
-(BOOL)openURL:(NSURL *)url;
//openURL:方法的部分功能有
//打电话:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@“tel://18812345678”]];
//发短信:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@“sms://18812345678"]];
//发邮件:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@“mailto://marlonxlj@163.com”]];
//打开网页:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@“http://www.baidu.com”]];
//调用谷歌地图(Google Maps)
NSString *searchQuery = @"1 Infinite Loop, Cupertino, CA 95014";
searchQuery = [addressText stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSString *urlString=[NSString stringWithFormat:@"http://maps.google.com/maps?q=%@", searchQuery];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: urlString]];
//调用应用商店(AppStore),这个地址是可以官网上查到的
NSURL *appStoreUrl= [NSURL URLWithString:@"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=291589999&mt=8"];
[[UIApplication sharedApplication] openURL:appStoreUrl];
//调用appstore中程序的评论
NSString *str = [NSString stringWithFormat:
@"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%d",
m_appleID ];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];