UIApplication和OpenUrl的基于使用方法
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;
}
/**当前是否支持哪些转屏*/
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationLandscapeRight;
}
/**显示状态栏*/
- (BOOL)prefersStatusBarHidden
{
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]];
> 关于iOS10系统调用的问题
> iOS10以下可以调用到系统的WIFI设置等,但是iOS10以后就不再支持系统调用到WIFI设置等,只是调到App的系统设置页面。
> 有任何问题请及时issues me
> Email: marlonxlj@163.com
UIApplication和OpenUrl的基于使用方法的更多相关文章
- Ios 调用Appstore 下载界面 [[UIApplication sharedApplication] openURL
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?mt=8&id=286274367 id = itunesconn ...
- iOS开发中使用[[UIApplication sharedApplication] openURL:]加载其它应用
iOS 应用程序之间(1) 在iOS开发中,经常需要调用其它App,如拨打电话.发送邮件等.UIApplication:openURL:方法是实现这一目的的最简单方法,该方法一般通过提供的u ...
- Spring-Context之六:基于Setter方法进行依赖注入
上文讲了基于构造器进行依赖注入,这里讲解基于Setter方法进行注入.在Java世界中有个约定(Convention),那就是属性的设置和获取的方法名一般是:set+属性名(参数)及get+属性名() ...
- UCP规模估算方法介绍 基于UCP方法的软件项目成本估计及其应用方法,软件,项目,UCP方法,应用,项目估算及软件及应用,软件估算,项目成本,软件项目
基于UCP方法的软件项目成本估计及其应用 UCP说明: UCP = 交易的UCP数 + Actor的UCP数,1.交易/Actor在估算时按复杂度分为简单.普通.复杂.主观类别,权重分别对应1.2.3 ...
- 基于SCRUM方法实践的西油计科党建设计与实现
基于SCRUM方法实践的西油计科党建设计与实现 序言 所属课程 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesig ...
- 基于SCRUM方法实践的西油计科党建设计与实现-个人实践流程清单
基于SCRUM方法实践的西油计科党建设计与实现 个人实践流程清单 一.Alpha版本冲刺个人在SCRUM团队任务清单: 时间 我这个三天做了什么 实际解决燃尽图项目数量 我遇到了什么问题 我下一个三天 ...
- PCFG -- 基于统计方法生成语法树
语法树的作用 一棵语法树不仅包括了词性(part of speech), 还包括了短语(如名词短语, 动词短语)和结构化的信息(如主语, 谓语和宾语). 这些信息是进行机器翻译所必须的, 例如机器翻译 ...
- 基于核方法的模糊C均值聚类
摘要: 本文主要针对于FCM算法在很大程度上局限于处理球星星团数据的不足,引入了核方法对算法进行优化. 与许多聚类算法一样,FCM选择欧氏距离作为样本点与相应聚类中心之间的非相似性指标,致使算法趋向 ...
- 网络测量中基于Sketch方法的调查
目录 LD Sketch SeqHash What's New reversible sketch Count-Sketch和Count-min sketch Diamond Sketch: Accu ...
随机推荐
- nohup程序后台执行
Linux常用命令,用于不挂断的执行程序. nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令.该命令可以在你退出帐户/关闭终端之后继续运行相应 ...
- 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发
阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...
- solr_架构案例【京东站内搜索】(附程序源代码)
注意事项:首先要保证部署solr服务的Tomcat容器和检索solr服务中数据的Tomcat容器,它们的端口号不能发生冲突,否则web程序是不可能运行起来的. 一:solr服务的端口号.我这里的sol ...
- 【Win 10 应用开发】启动远程设备上的应用
这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...
- IIC驱动移植在linux3.14.78上的实现和在linux2.6.29上实现对比(deep dive)
首先说明下为什么写这篇文章,网上有许多博客也是介绍I2C驱动在linux上移植的实现,但是笔者认为他们相当一部分没有分清所写的驱动时的驱动模型,是基于device tree, 还是基于传统的Platf ...
- 深入浅出JavaScript之闭包(Closure)
闭包(closure)是掌握Javascript从人门到深入一个非常重要的门槛,它是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.下面写下我的学习笔记~ 闭包-无处不 ...
- 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型
前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...
- .NET应用程序域
在.NET平台下,可执行程序并没有直接承载在Windows进程中,而非托管程序是直接承载的..NET可执行程序承载在进程的一个逻辑分区中,称之为应用程序域(AppDomain).一个进程可以包含多个应 ...
- __Block与__Weak区别
一.__block理解: Blocks可以访问局部变量,但是不能修改, 声明block的时候实际上是把当时的临时变量又复制了一份, 在block里即使修改了这些复制的变量,也不影响外面的原始变量.即所 ...
- 【Java并发编程实战】----- AQS(二):获取锁、释放锁
上篇博客稍微介绍了一下AQS,下面我们来关注下AQS的所获取和锁释放. AQS锁获取 AQS包含如下几个方法: acquire(int arg):以独占模式获取对象,忽略中断. acquireInte ...