UIApplication

  • 简单介绍
    • UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。
    • 每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。
    • 通过[UIApplication sharedApplication]可以获得这个单例对象
    • 一个iOS程序启动后创建的第一个对象就是UIApplication对象,且只有一个(通过代码获取两个UIApplication对象,打印地址可以看出地址是相同的)。
    • 利用UIApplication对象,能进行一些应用级别的操作
  • 2.应用级别的操作示例:

    • 设置应用程序图标右上角的红色提醒数字(如QQ消息的时候,图标上面会显示1,2,3条新信息等)

      UIApplication * app = [UIApplication sharedApplication];
      // 设置appIcon提醒数字,必须注册用户通知
      app.applicationIconBadgeNumber = 10;
      // 创建用户通知
      UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
      // 注册用户的通知
      [app registerUserNotificationSettings:settings];

    • 设置联网指示器的可见性

      // 设置联网状态
      app.networkActivityIndicatorVisible = YES;

    • 管理状态栏
      从iOS7开始,系统提供了2种管理状态栏的方式

      • 通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏)

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

        #pragma mark-设置状态栏的样式
        -(UIStatusBarStyle)preferredStatusBarStyle
        {
        //设置为白色
        //return UIStatusBarStyleLightContent;
        //默认为黑色
        return UIStatusBarStyleDefault;
        }
        #pragma mark-设置状态栏是否隐藏(否)
        -(BOOL)prefersStatusBarHidden
        {
        return NO;
        }
      • 通过UIApplication管理(一个应用程序的状态栏都由它统一管理)

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

 /设置状态栏的样式
    app.statusBarStyle=UIStatusBarStyleDefault;//默认(黑色)
    //设置为白色+动画效果
      [app setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
    //设置状态栏是否隐藏
    app.statusBarHidden=YES;
      //设置状态栏是否隐藏+动画效果
    [app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
      • 补充:
        • 既然两种都可以对状态栏进行管理,那么什么时候该用什么呢?
        • 如果状态栏的样式只设置一次,那就用UIApplication来进行管理。
        • 如果状态栏是否隐藏,样式不一样那就用控制器进行管理。
        • UIApplication来进行管理有额外的好处,可以提供动画效果。
    • openURL:方法

      • UIApplication有个功能十分强大的openURL:方法

         - (BOOL)openURL:(NSURL*)url;
      • openURL:方法的部分功能有

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

        • URL补充:

二、程序启动的完整过程

1.main函数

2.UIApplicationMain

  • 创建UIApplication对象

  • 创建UIApplication的delegate对象

3.delegate对象开始处理(监听)系统事件(没有storyboard)

  • 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法

  • 在application:didFinishLaunchingWithOptions:中创建UIWindow

  • 创建和设置UIWindow的rootViewController

  • 显示窗口

3.根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard)

  • 创建UIWindow

  • 创建和设置UIWindow的rootViewController

  • 显示窗口

原文地址:https://www.cnblogs.com/luoze/p/5468177.html