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


轉自:http://www.open-open.com/lib/view/open1420634129218.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM