每个app有且只有一个UIApplication对象,当程序启动的时候通过调用UIApplicationMain方法得到的。可以通过sharedApplication方法得到。

UIApplication对象的主要任务是处理用户事件的处理路径,例如分发一个UIEvent到另外一个对象去处理。UIApplication对象持有众多的UIWindow对象,因此可以组织app的展示。UIApplication对象还能处理一些资源,例如通过openURL:打开邮箱客户端或者设置界面等。

获得UIApplication对象

  1. [UIApplication sharedApplication]

获得UIApplicationDelegate对象

  1. [[UIApplication sharedApplication] delegate]

获得UIWindow对象

  1. [[UIApplication sharedApplication] windows]; //UIWindow数组
  2. [[UIApplication sharedApplication] keyWindow]; //UIWindow数组中最后调用makeKeyAndVisible方法的UIWindow对象

控制和处理UIEvent

  1. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
  2. {//分发一个event到另外一个对象去处理
  3. [[UIApplication sharedApplication] sendAction:@selector(action: forEvent:) to:[CustomHandler sharedCustomHandler] from:self forEvent:event];
  4. }
  1. [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; //开始忽略Event
  2. //...中间调用动画等操作
  3. [[UIApplication sharedApplication] endIgnoringInteractionEvents]; //结束忽略Event
  1. [UIApplication sharedApplication].applicationSupportsShakeToEdit = YES; //晃动是否有撤销或者重做动作

打开URL资源

  1. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];//打开设置界面

配置通知设置

  1. UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
  2. UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
  3. [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings]; //注册远程推送通知
  1. [[UIApplication sharedApplication] registerForRemoteNotifications];//注册
  2. [[UIApplication sharedApplication] unregisterForRemoteNotifications];//注销
  1. NSDate *date = [NSDate dateWithTimeIntervalSinceNow:10];
  2. UILocalNotification *localNotif = [[UILocalNotification alloc] init];
  3. localNotif.fireDate = date; //时间
  4. localNotif.timeZone = [NSTimeZone localTimeZone]; //时区
  5. localNotif.repeatInterval = NSCalendarUnitMinute; //间隔
  6. localNotif.soundName = UILocalNotificationDefaultSoundName; //声音
  7. localNotif.alertBody = @"Local Test"; //通知内容
  8. localNotif.applicationIconBadgeNumber = 1; //数字标示
  9. localNotif.userInfo = @{@"key":@"test"}; //info
  10. [[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; //注册通知
  1. [[UIApplication sharedApplication] presentLocalNotificationNow:localNotif]; //立即通知
  2. [[UIApplication sharedApplication] cancelAllLocalNotifications]; //取消所有通知
  3. [[UIApplication sharedApplication] cancelLocalNotification:localNotif]; //取消特定的通知
  4.  
  5. NSArray *arr = [[UIApplication sharedApplication] scheduledLocalNotifications]; //所有的通知

后台运行相关

  1. [[UIApplication sharedApplication] applicationState]; //app状态
  2. [[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:3600]; //设置后台运行时间
  3. NSTimeInterval remainTime = [[UIApplication sharedApplication] backgroundTimeRemaining]; //app后台运行的时间
  4. NSLog(@"remainTIme = %f",remainTime);
  5. int state = [[UIApplication sharedApplication] backgroundRefreshStatus]; //后台刷新的状态
  6. NSLog(@"state = %d",state);
  7. [[UIApplication sharedApplication] beginBackgroundTaskWithName:@"taskOne" expirationHandler:^{
  8. }];
  9. [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
  10. }];
  11. [[UIApplication sharedApplication] endBackgroundTask:1];

远程的控制相关

  1. [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
  2. [[UIApplication sharedApplication] endReceivingRemoteControlEvents];

系统的Idle Timer

  1. [UIApplication sharedApplication].idleTimerDisabled = YES; //不让手机休眠

APP样式

  1. //隐藏状态条
  2. [[UIApplication sharedApplication] setStatusBarHidden:YES];
  3. [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
  4. //设置状态条的样式
  5. [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
  6. [[UIApplication sharedApplication] statusBarStyle];
  7. //状态条的Frame
  8. [[UIApplication sharedApplication] statusBarFrame];
  9. //网络是否可见
  10. [[UIApplication sharedApplication] isNetworkActivityIndicatorVisible];
  11. //badge数字
  12. [UIApplication sharedApplication].applicationIconBadgeNumber = 2;
  13. //屏幕的方向
  14. [[UIApplication sharedApplication] userInterfaceLayoutDirection];

设置状态条的方向

  1. [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES];

数据类型

  1. UIBackgroundTaskIdentifier : Int
  1. typedef enum : NSUInteger {
  2. UIRemoteNotificationTypeNone = 0,
  3. UIRemoteNotificationTypeBadge = 1 << 0,
  4. UIRemoteNotificationTypeSound = 1 << 1,
  5. UIRemoteNotificationTypeAlert = 1 << 2,
  6. UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3
  7. } UIRemoteNotificationType;
  1. typedef enum : NSInteger {
  2. UIStatusBarStyleDefault,
  3. UIStatusBarStyleLightContent,
  4.  
  5. UIStatusBarStyleBlackTranslucent,
  6. UIStatusBarStyleBlackOpaque
  7. } UIStatusBarStyle;
  1. typedef enum : NSInteger {
  2. UIStatusBarAnimationNone,
  3. UIStatusBarAnimationFade,
  4. UIStatusBarAnimationSlide,
  5. } UIStatusBarAnimation;
  1. typedef enum : NSInteger {
  2. UIApplicationStateActive ,
  3. UIApplicationStateInactive ,
  4. UIApplicationStateBackground
  5. } UIApplicationState;
  1. const UIBackgroundTaskIdentifier UIBackgroundTaskInvalid ;
  2. const NSTimeInterval UIMinimumKeepAliveTimeout;
  1. typedef enum : NSUInteger {
  2. UIBackgroundFetchResultNewData ,
  3. UIBackgroundFetchResultNoData ,
  4. UIBackgroundFetchResultFailed
  5. } UIBackgroundFetchResult;
  1. const NSTimeInterval UIApplicationBackgroundFetchIntervalMinimum ;
  2. const NSTimeInterval UIApplicationBackgroundFetchIntervalNever;
  1. typedef enum : NSUInteger {
  2. UIBackgroundRefreshStatusRestricted ,
  3. UIBackgroundRefreshStatusDenied ,
  4. UIBackgroundRefreshStatusAvailable
  5. } UIBackgroundRefreshStatus;
  1. typedef enum : NSInteger {
  2. UIInterfaceOrientationUnknown = UIDeviceOrientationUnknown ,
  3. UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait ,
  4. UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown ,
  5. UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight ,
  6. UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
  7. } UIInterfaceOrientation;
  1. typedef enum : NSInteger {
  2. UIUserInterfaceLayoutDirectionLeftToRight ,
  3. UIUserInterfaceLayoutDirectionRightToLeft ,
  4. } UIUserInterfaceLayoutDirection;
  1. NSString *const UIApplicationOpenSettingsURLString;
  1. NSString *const UIApplicationStatusBarOrientationUserInfoKey ;
  2. NSString *const UIApplicationStatusBarFrameUserInfoKey;
  1. NSString *const UIContentSizeCategoryExtraSmall ;
  2. NSString *const UIContentSizeCategorySmall ;
  3. NSString *const UIContentSizeCategoryMedium ;
  4. NSString *const UIContentSizeCategoryLarge ;
  5. NSString *const UIContentSizeCategoryExtraLarge ;
  6. NSString *const UIContentSizeCategoryExtraExtraLarge ;
  7. NSString *const UIContentSizeCategoryExtraExtraExtraLarge;
  1. NSString *const UIContentSizeCategoryAccessibilityMedium ;
  2. NSString *const UIContentSizeCategoryAccessibilityLarge ;
  3. NSString *const UIContentSizeCategoryAccessibilityExtraLarge ;
  4. NSString *const UIContentSizeCategoryAccessibilityExtraExtraLarge ;
  5. NSString *const UIContentSizeCategoryAccessibilityExtraExtraExtraLarge;
  1. NSString *const UIApplicationInvalidInterfaceOrientationException;

通知

  1. UIApplicationBackgroundRefreshStatusDidChangeNotification
  2. UIApplicationDidBecomeActiveNotification
  3. UIApplicationDidChangeStatusBarFrameNotification
  4. UIApplicationDidChangeStatusBarOrientationNotification
  5. UIApplicationDidEnterBackgroundNotification
  6. UIApplicationDidFinishLaunchingNotification
  7. UIApplicationDidReceiveMemoryWarningNotification
  8. UIApplicationProtectedDataDidBecomeAvailable
  9. UIApplicationProtectedDataWillBecomeUnavailable
  10. UIApplicationSignificantTimeChangeNotification
  11. UIApplicationUserDidTakeScreenshotNotification
  12. UIApplicationWillChangeStatusBarOrientationNotification
  13. UIApplicationWillChangeStatusBarFrameNotification
  14. UIApplicationWillEnterForegroundNotification
  15. UIApplicationWillResignActiveNotification
  16. UIApplicationWillTerminateNotification
  17. UIContentSizeCategoryDidChangeNotification

UIApplication详解再解-备的更多相关文章

  1. S​Q​L​_​S​e​r​v​e​r​_​2​0​0​8​定​期​自​动​备​份​详​细​图​解

    S​Q​L​_​S​e​r​v​e​r​_​2​0​0​8​定​期​自​动​备​份​详​细​图​解 设置自动数据库的定期备份计划. http://wenku.baidu.com/link?url=Tu ...

  2. linux下如何打包压缩?解包解压?.tar文件.gz文件

    ===文件打包.压缩 ==打包 tar [root@521478.com]# tar -cvf etc1.tar /etc //c创建 v详细 f打包后文件名 [root@521478.com]# t ...

  3. iOS之UIApplication详解

    UIApplication对象特点: 特点1: UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序,而且是单例的.(用来封装整个应用程序的一个对象, ...

  4. 【转】iOS UIApplication详解

    1.状态栏UIStateBar的设置是在UIApplication里面设置的,它包含4中风格 2. - (void)beginIgnoringInteractionEvents; (void)endI ...

  5. UIApplication详解

    每个app有且只有一个UIApplication对象,当程序启动的时候通过调用UIApplicationMain方法得到的.可以通过sharedApplication方法得到. UIApplicati ...

  6. javascript运行机制详解: 再谈Event Loop(转)

    作者: 阮一峰 日期: 2014年10月 8日 一年前,我写了一篇<什么是 Event Loop?>,谈了我对Event Loop的理解. 上个月,我偶然看到了Philip Roberts ...

  7. Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

    在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题. 那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar. 解决思路: ...

  8. 工控安全入门(三)—— 再解S7comm

    之前的文章我们都是在ctf的基础上学习工控协议知识的,显然这样对于S7comm的认识还不够深刻,这次就做一个实战补全,看看S7comm还有哪些值得我们深挖的地方. 本篇是对S7comm的补全和实战,阅 ...

  9. Django ORM中使用update_or_create功能再解

    以前,我解过这个问题,现在百度搜索,发了像也只能找到我这个帖子. https://www.cnblogs.com/aguncn/p/4922654.html 今天,看了看官方文档,关于这个update ...

随机推荐

  1. JavaScript 中的数字和日期类型

    本章节介绍如何掌握Javascript里的数字和日期类型 数字EDIT 在 JavaScript 里面,数字都是双精度浮点类型的 double-precision 64-bit binary form ...

  2. 在Linux上配置vsftpd

    一般安装好vsftpd这个服务,它的默认配置文件在这里:/etc/vsftpd/vsftpd.conf 用vim在里面可以添加一些变量控制权限之类的.还有很多chroot相关的东西,里面的变量都有作用 ...

  3. word 生成目录

    生成目录: (1)Ctrl+End,到达文档的最后一页: (2)"插入"菜单--引用--索引和目录(此时出现索引和目录对话框): (3)单击"目录"选项卡 a. ...

  4. Graphviz-Gdot语言学习

    GVEdit这个绘图软件呢我也是刚接触的,感觉画起图来还是很爽的...尤其很熟悉c++后很容易上手这门dot语言. 先看一下十分清新的编程界面: 没有天下最邪恶的语法加亮,没有缩进行...这又算什么! ...

  5. 将大型 Page Blob 的页范围进行分段

     Windows Azure 存储支持一种 Blob 类型,即 Page Blob.Page Blob 通过仅将已写入但未清除的页存入物理存储, 来有效存储稀疏数据.每页大小为 512 字节.Ge ...

  6. 黑马程序员_Java_collections and Arrays(工具类)

    collections collections工具类方法 1,static <T extends Comparable<? super T>> void sort(List&l ...

  7. cf435A Queue on Bus Stop

      A. Queue on Bus Stop time limit per test 1 second memory limit per test 256 megabytes input standa ...

  8. MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。

    1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...

  9. java.lang.String小测试

    还记得java.lang.String么,如果现在给你一个小程序,你能说出它的结果么 public static String ab(String a){ return a + "b&quo ...

  10. [RxJS] Creation operator: of()

    RxJS is a lot about the so-called "operators". We will learn most of the important operato ...