zoukankan      html  css  js  c++  java
  • iOS大神班笔记03-UIApplication

    UIApplication简介:

    1. UIApplication对象是应用程序的象征。
    2. 每一个应用程序都有自己的UIApplication对象,而且是单例。
    3. 一个iOS程序启动后创建的第一个对象就是UIApplication对象。
    4. 通过UIApplication *app = [UIApplication sharedApplication];可以获得这个单例对象。
    5. 利用UIApplication对象能进行一些应用级别的操作。

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

    • 设置应用程序图标右上角的红色提醒数字
      @property(nonatomic) NSInteger applicationIconBadgeNumber;
      //代码实现和效果 UIApplication *app = [UIApplication sharedApplication]; app.applicationIconBadgeNumber = 10; // 创建通知对象 UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil]; // 注册用户通知 [app registerUserNotificationSettings:setting];

      注:苹果为了增强用户体验,在iOS8以后我们需要创建通知才能实现图标右上角提醒,iOS8之前直接设置applicationIconBadgeNumber的值即可。


    提醒效果图
    • 设置联网指示器的可见性
      @property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL 
      networkActivityIndicatorVisible;
      
      //代码实现和效果
      
      app.networkActivityIndicatorVisible= YES;


      联网指示器显示效果图
    • 管理状态栏
      从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的设置,添加选中行,并设置为NO即可,这篇文章中有详细介绍iOS中用application 来管理电池栏状态


      Info.plist的设置


      代码:

      //通过sharedApplication获取该程序的UIApplication对象
      UIApplication *app=[UIApplication sharedApplication];
      //设置状态栏的样式
      //app.statusBarStyle=UIStatusBarStyleDefault;//默认(黑色)
      //设置为白色+动画效果
      [app setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
      //设置状态栏是否隐藏
      app.statusBarHidden=YES;
      //设置状态栏是否隐藏+动画效果
      [app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

      c.总结

      如果状态栏的样式只设置一次,那就用UIApplication来进行管理,并且UIApplication可以提供动画效果;
      如果状态栏是否隐藏,样式不一那就用每个控制器对自己的状态栏进行管理。

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

      UIApplication *app = [UIApplicationsharedApplication];
      打电话  [app openURL:[NSURLURLWithString:@"tel://110"]];
      发短信  [app openURL:[NSURLURLWithString:@"sms://10086"]];
      发邮件  [app openURL:[NSURLURLWithString:@"mailto://xxcc@fox.com"]];
      打开一个网页资源 [app openURL:[NSURL URLWithString:@"http://www.baidu.com"]];
      打开其他app程序   openURL方法,可以打开其他APP。

      系统内部根据不同的头标示来做出不同的相应。

    • 判断程序运行状态

        //判断程序运行状态
        /*
         UIApplicationStateActive, 
         UIApplicationStateInactive, 
         UIApplicationStateBackground
         */
      UIApplication *app = [UIApplication sharedApplication];
      if(app.applicationState ==UIApplicationStateInactive){
            NSLog(@"程序在运行状态");
        }
    • 阻止屏幕变暗进入休眠状态
        //阻止屏幕变暗,慎重使用本功能,因为非常耗电。
       UIApplication *app = [UIApplication sharedApplication];
       app.idleTimerDisabled =YES;

    UIApplication Delegate

    当app收到干扰,例如程序运行中来电等,就会产生一些系统事件,这时UIApplicaiton会通知它的代理delegate对象,让delegate代理来处理这些系统事件。
    delegate可以处理的时间包括

    1.应用程序的生命周期事件(如程序启动和关闭)
    2.系统事件(如来电)
    3.内存警告(用处较多)

    每当我们创建项目时,程序中的AppDelegate文件就是UIAppliacation的代理,我们可以发现它已经遵守了UIApplicationDelegate。

    @interface AppDelegate : UIResponder <UIApplicationDelegate>
    下面我们来看一下AppDelegate的方法

    // AppDelegate:监听应用程序的生命周期
    // 以下方法就是应用程序的生命周期方法
    
    // 应用程序启动完成的时候就会调用AppDelegate的方法
    - (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 {
    
    }
    //收到内存警告时调用
    -(void)applicationDidReceiveMemoryWarning:(UIApplication *)application{
    
    }
  • 相关阅读:
    java中的subList
    值传递和引用传递
    java程序中有异常处理和没有异常处理的区别
    正则表达式
    poj 3187 三角数问题
    poj 2718 切数问题 穷竭搜索
    ACM 广度优化搜索算法总结
    poj 3669 火星撞地球问题 bfs算法
    poj 2251 三维地图最短路径问题 bfs算法
    ACM 深度优化搜索算法小总结
  • 原文地址:https://www.cnblogs.com/ming1025/p/6761240.html
Copyright © 2011-2022 走看看