1.设置应用程序图标右上角的红色提醒数字
@property(nonatomic) NSInteger applicationIconBadgeNumber;
**在iOS8中要实现badge、alert和sound等都需要用户同意才能,因为这些都算做Notification“通知”,为了防止有些应用动不动给用户发送“通知”骚扰用户,所以在iOS8时,要“通知”必须要用户同意才行。
那么我们需要在app加载完毕时实现以下方法
**
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
float sysVersion=[[UIDevice currentDevice]systemVersion].floatValue;
if (sysVersion>=8.0) {
UIUserNotificationType type=UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound;
UIUserNotificationSettings *setting=[UIUserNotificationSettings settingsForTypes:type categories:nil];
[[UIApplication sharedApplication]registerUserNotificationSettings:setting];
}
// Override point for customization after application launch.
return YES;
}
@property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
在iOS7以后默认情况下是UIViewController,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式
1.状态栏的样式
- (UIStatusBarStyle)preferredStatusBarStyle;
2.状态栏的可见性
- (BOOL)prefersStatusBarHidden;
利用UIApplication来管理状态栏
1.如果想利用UIApplication来管理状态栏,首先得修改Info.plist的设置
这样可以利用UIApplication属性管理状态栏
@property(nonatomic) UIStatusBarStyle statusBarStyle; // default is UIStatusBarStyleDefault
- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated;
@property(nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden;
//设置隐藏时的动画
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation
1.URL:一个资源的唯一路径
2.URL的组成:协议头://主机域名/路径
网络资源URL http://
本地资源:file///路径
打电话
UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString:@"tel://10086"]];
发短信
[app openURL:[NSURL URLWithString:@"sms://10086"]];
发邮件
[app openURL:[NSURL URLWithString:@"mailto://[email protected]"]];
打开一个网页资源
[app openURL:[NSURL URLWithString:@"http://www.baidu.com"]];
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
当程序被载入,UIApplication会检测到这一情况后,就会委托AppDelegate对象,调用该方法
*从某种意义上来讲,我们可以认为这个方法就是UI界面的“main”(即UI界面就从这个方法中开始搭建起来的)*/
(void)applicationWillResignActive:(UIApplication *)application;
当程序即将终止活动状态时,委托这个方法。(切换到后台、来电打断)
(void)applicationDidEnterBackground:(UIApplication *)application
当应用已经进入后台就会委托这个方法 释放大数据,保存进度,销毁定时器
(void)applicationWillEnterForeground:(UIApplication *)application
程序即将进入前台 重新载入图片等资源,重新创建对象,重启定时器等操作
(void)applicationDidBecomeActive:(UIApplication *)application
程序已经进入活动状态
(void)applicationWillTerminate:(UIApplication *)application
当程序即将崩溃时(内存不足),调用这个方法
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
内存紧张程序会被崩溃掉,在崩溃前如果有该方法就会调用,做一次内存的补救(比如释放不必要的大数据),如果补救失败,再崩溃
main函数中执行了一个UIApplicationMain这个函数
int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
argc、argv:直接传递给UIApplicationMain进行相关处理即可
principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值
delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议
UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性
接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)
程序正常退出时UIApplicationMain函数才返回
1.创建方式
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
LROneViewController *one = [[LROneViewController alloc] init];
one.view.backgroundColor = [UIColor redColor];
self.window.rootViewController = one;
//让window成为主窗口并且可见
[self.window makeKeyAndVisible];
return YES;
}
2.window的获得
//获取所有的window
[UIApplication sharedApplication].windows
//获取主window
[UIApplication sharedApplication].keyWindow
//获得某个UIView所在的UIWindow
view.window