每一個app有且只有一個UIApplication對象,當程序啓動的時候經過調用UIApplicationMain方法獲得的。能夠經過sharedApplication方法獲得。html
UIApplication對象的主要任務是處理用戶事件的處理路徑,例如分發一個UIEvent到另一個對象去處理。UIApplication對象持有衆多的UIWindow對象,所以能夠組織app的展現。UIApplication對象還能處理一些資源,例如經過openURL:打開郵箱客戶端或者設置界面等。ios
得到UIApplication對象windows
[UIApplication sharedApplication]
得到UIApplicationDelegate對象數組
[[UIApplication sharedApplication] delegate]
得到UIWindow對象網絡
[[UIApplication sharedApplication] windows]; //UIWindow數組 [[UIApplication sharedApplication] keyWindow]; //UIWindow數組中最後調用makeKeyAndVisible方法的UIWindow對象
控制和處理UIEventapp
- (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資源 ide
[[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]; //全部的通知
後臺運行相關 htm
[[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轉自:http://www.open-open.com/lib/view/open1420634129218.html