整个应用程序的象征,一个应用程序就一个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,不让它空闲的时候自动进入睡眠
4、networkActivityIndicatorVisible
属性:设置网络那个小菊花是否一直转动,默认是NO,设置为YES后菊花一直转动
5、@property(nonatomic) NSInteger applicationIconBadgeNumber; //设置应用图标上的未读数目,类似QQ上的未读消息数目提醒
6、UIApplication是一个单例模式,整个app只有一个
7、canOpenUrl:(NSString*)url
此方法判断能否打开一个url资源
openUrl:(NSString *)url
打开一个url资源,如果这个url是另外一个app的url,另外一个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。