iOS UIApplication

整个应用程序的象征,一个应用程序就一个UIApplication对象,使用了单例设计模式,通过[UIApplication sharedApplication]访问这个单例对象。

1> 整个应用程序的象征,一个应用程序就一个UIApplication对象,使用了单例设计模式

2> 通过[UIApplication sharedApplication]访问这个单例对象

2.常见用法

1> 设置图标右上角的红色提示数字

app.applicationIconBadgeNumber = 10;

2> 设置状态栏的样式

app.statusBarStyle = UIStatusBarStyleBlackOpaque;

3> 控制状态栏的显示和隐藏

app.statusBarHidden = YES;

4> 显示状态栏上面的圈圈

app.networkActivityIndicatorVisible = YES;

5> 打开外部资源

 // URL : 一个资源的唯一路径

    

    // URL的组成 == 协议头://主机域名/路径

    

    // 网络资源URL的组成 == http://www.baidu.com/1.png

    

    // 本地文件资源URL的组成 == file:///Users/apple/Desktop/1.png


  • 打开网页

    [app openURL:[NSURL URLWithString:@“http://www.baidu.com”]];
  • 打电话

    [app openURL:[NSURL URLWithString:@“tel://10086”]];
  • 发短信

    [app openURL:[NSURL URLWithString:@“sms://10086”]];

6> 代理属性(当应用程序发生了一些系统级别的事件,就会通知代理,交给代理去处理)

@property(nonatomic,assign) id delegate;

UIApplicationDelegate的代理方法

pragma mark 程序加载完毕(启动完毕)就会调用一次

  • (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions

pragma mark 应用程序失去焦点的时候调用(一个app如果失去焦点,就不能跟用户进行交互)

  • (void)applicationWillResignActive:(UIApplication *)application

pragma mark 程序进入后台就会调用

  • (void)applicationDidEnterBackground:(UIApplication *)application

pragma mark 程序即将进入前台的时候调用

  • (void)applicationWillEnterForeground:(UIApplication *)application

pragma mark 应用程序获得焦点的时候调用(一个app只有获得焦点之后才能跟用户进行交互)

  • (void)applicationDidBecomeActive:(UIApplication *)application

pragma mark 程序即将被关闭的时候可能会被调用

  • (void)applicationWillTerminate:(UIApplication *)application

pragma mark 程序接收到内存警告都会调用

  • (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

1、状态栏UIStateBar的设置是在UIApplication里面设置的,它包含4中风格

2 - (void)beginIgnoringInteractionEvents; 

- (void)endIgnoringInteractionEvents;

- (BOOL)isIgnoringInteractionEvents; 

这三种方法一般用于动画开始和结束设置,让动画执行期间,用户的其他触摸事件暂时不去响应。这样就不用弄遮罩层了,视图上的其他控件就没法响应了,等到动画结束后才能响应。

3@property(nonatomic,getter=isIdleTimerDisabled)       BOOL idleTimerDisabled;

属性:用来设置屏幕是否进入睡眠,默认是NO,即默认是会进入睡眠的,一般情况下只有游戏或者是一直需要用户交互事件的才设置为YES,不让它空闲的时候自动进入睡眠

4networkActivityIndicatorVisible

属性:设置网络那个小菊花是否一直转动,默认是NO,设置为YES后菊花一直转动

5@property(nonatomic) NSInteger applicationIconBadgeNumber; //设置应用图标上的未读数目,类似QQ上的未读消息数目提醒

6UIApplication是一个单例模式,整个app只有一个

7canOpenUrl:(NSString*)url

此方法判断能否打开一个url资源

openUrl:(NSString *)url

打开一个url资源,如果这个url是另外一个appurl,另外一个app将会启动。url支持几种类型:http,https,电话、视频聊天、email

8- (void)sendEvent:(UIEvent *)event

任何事件都可以在这里被截获

9@property(nonatomic,readonly) NSArray  *windows;keywindow

刚开始看了觉得很奇怪,不是说一个应用只有一个窗口吗?干嘛还弄个数组,结果一测试才知道输出来以后,除了window还有UITextEffetsWindow。网上查了keywindow是指当前活跃的window,与用户交互的window。而windows是指当前app打开的所有window,比如键盘也在一个window里面,alert也在一个window里面。在windows数组里面,window是根据windowLevel来排列的,最后一个覆盖在最上面。这里的windows数组不包括系统提供的window,比如说状态栏就是在一个系统创建的window里面

注意:keyWindow不是一成不变的,当你创建alertView或者ActionSheet的时候,它们所在的window会变成keyWindow。也就是说系统默认创建的window首先变成keywindow,而当弹框的时候,alertView所在的window变成keywindow,默认的keywindow变成非keywindow。




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。