UIApplication的一些知識

每個app有且只有一個UIApplication對象,當程序啓動的時候通過調用UIApplicationMain方法得到的。可以通過sharedApplication方法得到。

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章