• 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
  • 相关阅读:
    Linux文件系统之目录清单
    Linux系统使用iftop查看带宽占用情况
    性能分析之TCP全连接队列占满问题分析及优化过程(转载)
    什么是枚举及枚举的使用场合
    height:100%和height:auto的区别
    Jquery基础之DOM操作
    SSM三大框架整合(Spring+SpringMVC+MyBatis)
    js解析JSON
    mybatis中oracle实现分页效果
    MyBatis动态SQL语句
  • 原文地址:https://www.cnblogs.com/isItOk/p/5275075.html
Copyright © 2020-2023  润新知