iOS学习之 UIApplication

作者: 马文涛 | 来源:发表于2015-09-17 22:52 被阅读166次

    UIApplication

    • 基本概念
      • UIApplication对象是应用程序的象征,每一个应用都有自己的UIApplication对象,而且是单例模式的,不能通过 alloc init 方式创建,一个程序只允许一个
      • 一个 iOS 程序启动创建的第一个对象就是 UIApplication 对象,并且可以做一些应用级别的操作
    • 基本属性方法
      • @property(nonatomic) NSInteger applicationIconBadgeNumber; 设置应用程序图标右上角的红色提醒数字

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

      • -(BOOL)openURL:(NSURL *)url 十分强大的方法

            // TEL
            UIApplication *app = [UIApplication sharedApplication];
            [app openURL:[NSURL URLWithString:@"tel://10086"]];
            // SMS
            [app openURL:[NSURL URLWithString:@"mailto://11915805@qq.com"]]
            // http
            [app openURL:[NSURL URLWithString:@"http://www.baidu.com"]];
            // 打开其他应用程序
        
        
    • StatusBar状态
      1. 从iOS7开始,系统提供了2种管理状态栏的方式
        • 通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏)
        • 通过UIApplication管理(一个应用程序的状态栏都由它统一管理)
      2. 在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式
        • - (UIStatusBarStyle)preferredStatusBarStyle; 状态栏的样式
        • - (BOOL)prefersStatusBarHidden; 状态栏的可见性
      3. 如果想通过 UIApplication 来管理状态栏, 首先得修改 Info.plist
        • 在文件的一个行的最后个一个key:View vontroller-based status bar appearance 改为 NO
        UIApplication *app = [UIApplication sharedApplication];
        // 隐藏状态栏
        [app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
            
        
    • UIApplicationdelegate
      • 常用的代理方法
        • 这些UIApplicationDelegate有什么用,监听应用程序的生命周期,监听内存警告,系统事件
        • - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 当应用程序启动完成的时候,系统会自动调用代理这个方法
        • - (void)applicationWillResignActive:(UIApplication *)application当应用程序失去焦点的时候就会调用
        • - (void)applicationDidEnterBackground:(UIApplication *)application当应用程序进入后台的时候就会调用
        • -(void)applicationWillEnterForeground:(UIApplication *)application当应用程序进入前台的时候就会调用
        • - (void)applicationDidBecomeActive:(UIApplication *)application当应用程序获取焦点的时候就会调用,只有当一个应用程序完全获取焦点的时候,应用程序才能够与用户交互
        • - (void)applicationWillTerminate:(UIApplication *)application当应用程序关闭的时候就会调用
        • - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application监听内存警告
      • main 函数中的UIApplicationMain这个函数
        • int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
          1. argc、argv:直接传递给UIApplicationMain进行相关处理即可
          2. principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类)。如果为nil = UIApplication
          3. delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议, 这里不能传 nil,如果传 nil 意味着 application 没有代理,就无法监听系统事件。
      • UIApplicationMain底层做事情
        1. 创建一个UIApplication对象,根据principalClassName创建
        2. 创建UIApplication代理对象,设置UIApplication代理
        3. 开启一个主要的事件循环,让程序一直运行,处理事件.
        4. 加载Info.plist文件,判断下有没有指定main.storyboard,如果有就加载

    相关文章

      网友评论

        本文标题:iOS学习之 UIApplication

        本文链接:https://www.haomeiwen.com/subject/vuubcttx.html