zoukankan      html  css  js  c++  java
  • UIApplication

    什么是UIApplication

    UIApplication对象是应用程序的象征

    每一个应用都有自己的UIApplication对象,而且是单例的

    通过[UIApplication sharedApplication]可以获得这个单例对象

    一个iOS程序启动后创建的第一个对象就是UIApplication对象

    利用UIApplication对象,能进行一些应用级别的操作

    UIApplication的常用属性

    设置应用程序图标右上角的红色提醒数字
    @property(nonatomic) NSInteger applicationIconBadgeNumber;

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

    设置联网指示器的可见性
    @property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;

    iOS7中的状态栏

    从iOS7开始,系统提供了2种管理状态栏的方式
    通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏)
    通过UIApplication管理(一个应用程序的状态栏都由它统一管理)


    在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式
    状态栏的样式
    - (UIStatusBarStyle)preferredStatusBarStyle;

    状态栏的可见性
    (BOOL)prefersStatusBarHidden;

    通常在开发当中都是应用程序来管理状态栏的.来做统一管理,不然的话, 会有很多个控制器.会非常的麻烦.
    想要让应用程序管理状态栏,要在info.plist当中进行配置,
    添加一个key值:是最后一个,View controller-based status bar appearance
    设置为NO.就是应用程序来管理了.
    通过UIApplication来管理状态.
    1.获取UIApplication
    UIApplication *ap = [UIApplication sharedApplication];
    2.设置状态栏样式.
    ap.statusBarStyle = UIStatusBarStyleLightContent;
    3.设置状态的隐藏
    ap.statusBarHidden = YES;

    利用UIApplication来管理状态栏

    如果想利用UIApplication来管理状态栏,首先得修改Info.plist的设置

    openURL:

    UIApplication有个功能十分强大的openURL:方法
    - (BOOL)openURL:(NSURL*)url;

    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 openURL:[NSURL URLWithString:@"http://www.520it.com"]];

    打开其他app程序

    UIApplication和delegate

    所有的移动操作系统都有个致命的缺点:app很容易受到打扰。比如一个来电或者锁屏会导致app进入后台甚至被终止

    还有很多其它类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,这时UIApplication会通知它的delegate对象,让delegate代理来处理这些系统事件

    delegate可处理的事件包括:
    应用程序的生命周期事件(如程序启动和关闭)
    系统事件(如来电)
    内存警告

    UIApplicationDelegate

    每次新建完项目,都有个带有“AppDelegate”字眼的类,它就是UIApplication的代理

    AppDelegate默认已经遵守了UIApplicationDelegate协议,已经是UIApplication的代理

    UIApplication会在程序一启动时候创建一个遵守UIApplicationDelegate代理.
    这个就是我们程序一创建时的AppDelegate类.AppDelegate就是遵守了
    UIApplicationDelegate协议.
    在这个类中很定义很多监听系统事件的方法.同时也定义了一些应用程序的生命周期方法.
    主要方法有:
    应用程序的生命周期

    应用程序启动完成的时候调用
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
    (NSDictionary *)launchOptions {
    NSLog(@"%s",__func__);
    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__);
    }

  • 相关阅读:
    数据库主从配置
    数据库导出导入
    MySQL命令行导出数据库
    [待完善]mycat使用(一)
    行转列group_concat()函数妙用
    sas和ssd盘写入数据效率对比
    MySQL库中表名忽略大小写设置的影响
    create table b1 as select * from b建表锁表测试
    SQL优化实战之加索引
    分区表主键不包含分区键报错ERROR 1105 (HY000)
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6920528.html
Copyright © 2011-2022 走看看