UIApplication详解

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

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

获得UIApplication对象

 

1
[UIApplication sharedApplication]

获得UIApplicationDelegate对象

1
[[UIApplication sharedApplication] delegate]

获得UIWindow对象

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

控制和处理UIEvent

 

 

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

打开URL资源 

 

 

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

配置通知设置 

 

 

1
2
3
UIUserNotificationType  types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings  *mySettings  = [UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings]; //注册远程推送通知
1
2
[[UIApplication sharedApplication] registerForRemoteNotifications]; //注册
[[UIApplication sharedApplication] unregisterForRemoteNotifications]; //注销
1
2
3
4
5
6
7
8
9
10
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]; //注册通知
1
2
3
4
5
[[UIApplication sharedApplication] presentLocalNotificationNow:localNotif]; //立即通知
[[UIApplication sharedApplication] cancelAllLocalNotifications]; //取消所有通知
[[UIApplication sharedApplication] cancelLocalNotification:localNotif]; //取消特定的通知
 
NSArray *arr = [[UIApplication sharedApplication] scheduledLocalNotifications];  //所有的通知

后台运行相关 

 

 

1
2
3
4
5
6
7
8
9
10
11
[[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];

远程的控制相关 

 

 

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

系统的Idle Timer 

 

 

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

APP样式 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//隐藏状态条
[[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];

设置状态条的方向 

 

 

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

数据类型 

 

 

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

通知 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
UIApplicationBackgroundRefreshStatusDidChangeNotification
UIApplicationDidBecomeActiveNotification
UIApplicationDidChangeStatusBarFrameNotification
UIApplicationDidChangeStatusBarOrientationNotification
UIApplicationDidEnterBackgroundNotification
UIApplicationDidFinishLaunchingNotification
UIApplicationDidReceiveMemoryWarningNotification
UIApplicationProtectedDataDidBecomeAvailable
UIApplicationProtectedDataWillBecomeUnavailable
UIApplicationSignificantTimeChangeNotification
UIApplicationUserDidTakeScreenshotNotification
UIApplicationWillChangeStatusBarOrientationNotification
UIApplicationWillChangeStatusBarFrameNotification
UIApplicationWillEnterForegroundNotification
UIApplicationWillResignActiveNotification
UIApplicationWillTerminateNotification
UIContentSizeCategoryDidChangeNotification<br><br><br>转自:http: //www.open-open.com/lib/view/open1420634129218.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值