iOS UIApplication功能

原创 2016年06月01日 14:03:03


利用UIApplication对象,能进行一些应用级别的操作.可以设置应用程序图标右上角的红色提醒数字设置联网指示器的可见性可以设置应用程序的状态栏,进行应用之间的跳转.

UIApplication功能

1.设置应用提醒数字(桌面角标)

获取UIApplication对象
UIApplication *ap = [UIApplication sharedApplication];
在设置之前, 要注册一个通知,从ios8之后,都要先注册一个通知对象.才能够接收到提醒. UIUserNotificationSettings *notice =
[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
注册通知对象
[ap registerUserNotificationSettings:notice];
设置提醒数字
ap.applicationIconBadgeNumber = 20;

2.设置连网状态
// 添加联网时 状态栏的加载显示菊花转
ap.networkActivityIndicatorVisible = YES;


3.设置状态栏
//控制器提供的方法,可以直接重写这个方法在控制器当中设置状态栏样式

- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}

//隐藏状态栏,通过控制器的方式.同样实现方法:返回NO时为不隐藏返回YES时为隐藏

- (BOOL)prefersStatusBarHidden {
return NO;
}

//想要让应用程序管理状态栏,要在info.plist当中进行配置,在最后一个添加一个key值:View controller-based status bar appearance设置为NO.就是应用程序来管理了. 并且控制器管理会无效
1.获取UIApplication
UIApplication *ap = [UIApplication sharedApplication];
2.设置状态栏样式.
ap.statusBarStyle = UIStatusBarStyleLightContent;
3.设置状态的隐藏
ap.statusBarHidden = YES;
4.跳转网页
UIApplication *ap = [UIApplication sharedApplication];
//URL:协议头:

//域名 应用程序通过协议头的类型,去打开相应的软件.
NSURL *url =[NSURL URLWithString:@"http://www.baidu.com"]; [ap openURL:url];
//打电话
[application openURL:[NSURL URLWithString:@"tel://10086"]];
//发短信
[app openURL:[NSURL URLWithString:@"sms://10086"]];


UIApplication代理
//UIApplication会在程序一启动时候创建一个遵守UIApplicationDelegate的代理.这个就是我们程序一创建时的AppDelegate类。AppDelegate就是遵守了UIApplicationDelegate协议。 在这个类中定义很多监听系统事件的方法.同时也定义了一些应用程序的生命周期方法.
//主要方法有:
//应用程序的生命周期
//应用程序启动完成的时候调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions {
return YES;
}
//当我们应用程序即将失去焦点的时候调用
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"%s",__func__);
}
//当我们应用程序完全进?后台的时候调用
- (void)applicationDidEnterBackground:(UIApplication *)application{
NSLog(@"%s",__func__);
}
//当我们应用程序即将进?前台的时候调用
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"%s",__func__);}
//当我们应用程序完全获取焦点的时候调用
//只有当一个应用程序完全获取到焦点,才能与用户交互.
- (void)applicationDidBecomeActive:(UIApplication *)application {
- NSLog(@"%s",__func__);
}
//当我们应用程序即将关闭的时候调用
- (void)applicationWillTerminate:(UIApplication *)application {
NSLog(@"%s",__func__);
}

//程序启动时执行main函数,在main函数当中有以下操作.

int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
第三个参数:UIApplication类名或者子类的名称 nil == @"UIApplication"
NSStringFromClass好处:1.有提示功能 2.避免输入错误
}
}

程序完整启动流程

1.执行Main

2.执行UIApplicationMain函数.

3.创建UIApplication对象,并设置UIApplicationMain对象的代理.UIApplication的第三个参数就是UIApplication的名称,如果指定为nil,它会默认 为UIApplication.UIApplication的第四个参数为UIApplication的代理.

4.开启一个主运行循环.保证应用程序不退出.

5.加载info.plist.加载配置文文件.判断一下info.plist文件当中有没有Main storyboard file base name里面有没有指定storyboard文件,如果有就去加载info.plist文件,如果没有,那么应用程序加载完毕.

6.通知应用程序,调用代理方法
















版权声明:本文为博主原创文章,未经博主允许不得转载。

IOS UIApplication

IOS学习笔记之UIApplication
  • a921800467b
  • a921800467b
  • 2014年03月06日 11:40
  • 3393

问题:iOS9获取[[UIApplication sharedApplication] keyWindow]为 nil

问题升级到 iOS9之后, 发现之前的一些小的弹框的提示突然没有了, 查来查去发现在下面语句中, 获取的 keywindow竟然为 nil...
  • wangyanchang21
  • wangyanchang21
  • 2016年04月14日 16:32
  • 3332

ios 尽量用 [UIApplication sharedApplication].delegate.window

代码中用到UIWindow *window = [UIApplication sharedApplication].keyWindow 统一修改成UIWindow *window = [UIAppli...
  • robinson_911
  • robinson_911
  • 2016年06月29日 09:47
  • 2358

iOS -程序启动原理和UIApplication的介绍

一.UIApplication 简介       (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。 (2)每一个Application...
  • yang198907
  • yang198907
  • 2015年11月09日 10:32
  • 800

iOS之StatusBar

一. StatusBar字体默认为黑色, 想要更换StatusBar字体颜色为白色的话, (1)需要在info.plist中可以设置状态栏的外观是否是基于视图控制器,键的名称就是UIViewContr...
  • sinat_22545219
  • sinat_22545219
  • 2016年08月29日 17:19
  • 373

UIApplication sharedApplication 的常用使用方法

下面是这个类的一些功能: 1.设置icon上的数字图标     //设置主界面icon上的数字图标,在2.0中引进, 缺省为0     [UIApplicationsharedAppli...
  • sqc3375177
  • sqc3375177
  • 2015年05月14日 00:26
  • 5522

Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:]解决方法

升Xcode7之后,遇到这个问题,在网上查了一些资料,记录下来。 问题报错如下: Assertion failure in -[UIApplication _runWithMainScene:tra...
  • DuYangLu
  • DuYangLu
  • 2015年10月09日 15:11
  • 1937

iOS [[UIApplication sharedApplication] openURL:]加载其它应用

在iOS开发中,经常需要调用其它App,如拨打电话、发送邮件等。UIApplication:openURL:方法是实现这一目的的最简单方法,该方法一般通过提供的url参数的模式来调用不同的App。 ...
  • iOSZZZh
  • iOSZZZh
  • 2016年07月22日 16:37
  • 404

UIApplication keyWindow rootViewController 为 nil 的问题

一般来说 [UIApplication sharedApplication].keyWindow.rootViewController 会在 appDelegate 中初始化,并且整个应用运行过程中都...
  • ricky1217
  • ricky1217
  • 2012年02月27日 13:22
  • 3656

[UIApplication sharedApplication].keyWindow 添加视图无效,解决方案。

[UIApplication sharedApplication].keyWindow 在iOS7中为nil 的解决方案
  • wxs0124
  • wxs0124
  • 2015年08月01日 16:45
  • 11081
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS UIApplication功能
举报原因:
原因补充:

(最多只允许输入30个字)