UIApplication详解再解-备
2016-03-14 11:26
274 查看
每个app有且只有一个UIApplication对象,当程序启动的时候通过调用UIApplicationMain方法得到的。可以通过sharedApplication方法得到。
UIApplication对象的主要任务是处理用户事件的处理路径,例如分发一个UIEvent到另外一个对象去处理。UIApplication对象持有众多的UIWindow对象,因此可以组织app的展示。UIApplication对象还能处理一些资源,例如通过openURL:打开邮箱客户端或者设置界面等。
获得UIApplication对象
获得UIApplicationDelegate对象
获得UIWindow对象
控制和处理UIEvent
打开URL资源
配置通知设置
后台运行相关
远程的控制相关
系统的Idle Timer
APP样式
设置状态条的方向
数据类型
通知
UIApplication对象的主要任务是处理用户事件的处理路径,例如分发一个UIEvent到另外一个对象去处理。UIApplication对象持有众多的UIWindow对象,因此可以组织app的展示。UIApplication对象还能处理一些资源,例如通过openURL:打开邮箱客户端或者设置界面等。
获得UIApplication对象
[UIApplication sharedApplication]
获得UIApplicationDelegate对象
[[UIApplication sharedApplication] delegate]
获得UIWindow对象
[[UIApplication sharedApplication] windows]; //UIWindow数组 [[UIApplication sharedApplication] keyWindow]; //UIWindow数组中最后调用makeKeyAndVisible方法的UIWindow对象
控制和处理UIEvent
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {//分发一个event到另外一个对象去处理 [[UIApplication sharedApplication] sendAction:@selector(action: forEvent:) to:[CustomHandler sharedCustomHandler] from:self forEvent:event]; }
[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; //开始忽略Event //...中间调用动画等操作 [[UIApplication sharedApplication] endIgnoringInteractionEvents]; //结束忽略Event
[UIApplication sharedApplication].applicationSupportsShakeToEdit = YES; //晃动是否有撤销或者重做动作
打开URL资源
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];//打开设置界面
配置通知设置
UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert; UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings]; //注册远程推送通知
[[UIApplication sharedApplication] registerForRemoteNotifications];//注册 [[UIApplication sharedApplication] unregisterForRemoteNotifications];//注销
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:10]; UILocalNotification *localNotif = [[UILocalNotification alloc] init]; localNotif.fireDate = date; //时间 localNotif.timeZone = [NSTimeZone localTimeZone]; //时区 localNotif.repeatInterval = NSCalendarUnitMinute; //间隔 localNotif.soundName = UILocalNotificationDefaultSoundName; //声音 localNotif.alertBody = @"Local Test"; //通知内容 localNotif.applicationIconBadgeNumber = 1; //数字标示 localNotif.userInfo = @{@"key":@"test"}; //info [[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; //注册通知
[[UIApplication sharedApplication] presentLocalNotificationNow:localNotif]; //立即通知 [[UIApplication sharedApplication] cancelAllLocalNotifications]; //取消所有通知 [[UIApplication sharedApplication] cancelLocalNotification:localNotif]; //取消特定的通知 NSArray *arr = [[UIApplication sharedApplication] scheduledLocalNotifications]; //所有的通知
后台运行相关
[[UIApplication sharedApplication] applicationState]; //app状态 [[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:3600]; //设置后台运行时间 NSTimeInterval remainTime = [[UIApplication sharedApplication] backgroundTimeRemaining]; //app后台运行的时间 NSLog(@"remainTIme = %f",remainTime); int state = [[UIApplication sharedApplication] backgroundRefreshStatus]; //后台刷新的状态 NSLog(@"state = %d",state); [[UIApplication sharedApplication] beginBackgroundTaskWithName:@"taskOne" expirationHandler:^{ }]; [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ }]; [[UIApplication sharedApplication] endBackgroundTask:1];
远程的控制相关
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
系统的Idle Timer
[UIApplication sharedApplication].idleTimerDisabled = YES; //不让手机休眠
APP样式
//隐藏状态条 [[UIApplication sharedApplication] setStatusBarHidden:YES]; [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; //设置状态条的样式 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; [[UIApplication sharedApplication] statusBarStyle]; //状态条的Frame [[UIApplication sharedApplication] statusBarFrame]; //网络是否可见 [[UIApplication sharedApplication] isNetworkActivityIndicatorVisible]; //badge数字 [UIApplication sharedApplication].applicationIconBadgeNumber = 2; //屏幕的方向 [[UIApplication sharedApplication] userInterfaceLayoutDirection];
设置状态条的方向
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES];
数据类型
UIBackgroundTaskIdentifier : Int
typedef enum : NSUInteger { UIRemoteNotificationTypeNone = 0, UIRemoteNotificationTypeBadge = 1 << 0, UIRemoteNotificationTypeSound = 1 << 1, UIRemoteNotificationTypeAlert = 1 << 2, UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3 } UIRemoteNotificationType;
typedef enum : NSInteger { UIStatusBarStyleDefault, UIStatusBarStyleLightContent, UIStatusBarStyleBlackTranslucent, UIStatusBarStyleBlackOpaque } UIStatusBarStyle;
typedef enum : NSInteger { UIStatusBarAnimationNone, UIStatusBarAnimationFade, UIStatusBarAnimationSlide, } UIStatusBarAnimation;
typedef enum : NSInteger { UIApplicationStateActive , UIApplicationStateInactive , UIApplicationStateBackground } UIApplicationState;
const UIBackgroundTaskIdentifier UIBackgroundTaskInvalid ; const NSTimeInterval UIMinimumKeepAliveTimeout;
typedef enum : NSUInteger { UIBackgroundFetchResultNewData , UIBackgroundFetchResultNoData , UIBackgroundFetchResultFailed } UIBackgroundFetchResult;
const NSTimeInterval UIApplicationBackgroundFetchIntervalMinimum ; const NSTimeInterval UIApplicationBackgroundFetchIntervalNever;
typedef enum : NSUInteger { UIBackgroundRefreshStatusRestricted , UIBackgroundRefreshStatusDenied , UIBackgroundRefreshStatusAvailable } UIBackgroundRefreshStatus;
typedef enum : NSInteger { UIInterfaceOrientationUnknown = UIDeviceOrientationUnknown , UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait , UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown , UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight , UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft } UIInterfaceOrientation;
typedef enum : NSInteger { UIUserInterfaceLayoutDirectionLeftToRight , UIUserInterfaceLayoutDirectionRightToLeft , } UIUserInterfaceLayoutDirection;
NSString *const UIApplicationOpenSettingsURLString;
NSString *const UIApplicationStatusBarOrientationUserInfoKey ; NSString *const UIApplicationStatusBarFrameUserInfoKey;
NSString *const UIContentSizeCategoryExtraSmall ; NSString *const UIContentSizeCategorySmall ; NSString *const UIContentSizeCategoryMedium ; NSString *const UIContentSizeCategoryLarge ; NSString *const UIContentSizeCategoryExtraLarge ; NSString *const UIContentSizeCategoryExtraExtraLarge ; NSString *const UIContentSizeCategoryExtraExtraExtraLarge;
NSString *const UIContentSizeCategoryAccessibilityMedium ; NSString *const UIContentSizeCategoryAccessibilityLarge ; NSString *const UIContentSizeCategoryAccessibilityExtraLarge ; NSString *const UIContentSizeCategoryAccessibilityExtraExtraLarge ; NSString *const UIContentSizeCategoryAccessibilityExtraExtraExtraLarge;
NSString *const UIApplicationInvalidInterfaceOrientationException;
通知
UIApplicationBackgroundRefreshStatusDidChangeNotification UIApplicationDidBecomeActiveNotification UIApplicationDidChangeStatusBarFrameNotification UIApplicationDidChangeStatusBarOrientationNotification UIApplicationDidEnterBackgroundNotification UIApplicationDidFinishLaunchingNotification UIApplicationDidReceiveMemoryWarningNotification UIApplicationProtectedDataDidBecomeAvailable UIApplicationProtectedDataWillBecomeUnavailable UIApplicationSignificantTimeChangeNotification UIApplicationUserDidTakeScreenshotNotification UIApplicationWillChangeStatusBarOrientationNotification UIApplicationWillChangeStatusBarFrameNotification UIApplicationWillEnterForegroundNotification UIApplicationWillResignActiveNotification UIApplicationWillTerminateNotification UIContentSizeCategoryDidChangeNotification
相关文章推荐
- Android特效 五种Toast详解
- Android控件(一)下拉刷新:SwipeRefreshLayout
- android 键盘监听EditView时,自定义键盘的确定按钮样式
- iOS中枚举的使用
- APP开发之UITabBarController设置
- 在Android Studio中导入V7包中遇到的一些问题
- Swift学习之一:类型别名(Type Aliases)
- iOS webview注入JS
- 移动端的知识总结
- 程序被送入后台后,向 iOS 借时间,完成长期任务-备
- Android新手入门2016(6)--客户端编程思想的初步思考和Android学习路线
- android布局属性详解
- unity shader之岩浆瀑布
- android自定义属性
- 精灵帧缓存SpriteFrameCache-Cocos2dx-lua
- Android中如何获取视频文件的截图、缩略图
- adb命令大全
- Intelij开发工具使用-maven创建app项目强转web-app项目
- android自定义菜单
- iOS开发-文件管理(一)