UIApplication及UIWindow
@property(nonatomic) NSInteger applicationIconBadgeNumber; //设置应用程序图标右上角的红色提醒数字
@property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible; //设置联网指示器的可见性
- (BOOL)openURL:(NSURL*)url //打开资源,包括本地资源和网络资源
- 打电话 :
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.google.com"]];
- 打开其他app程序
- 通过 UIViewController 管理,每一个 UIViewController 都可以拥有自己不同的状态栏
- 通过 UIApplication 管理,一个应用程序的状态栏都由它统一管理,缺点是一个应用只有一个样式状态栏
- (UIStatusBarStyle)preferredStatusBarStyle; //状态栏样式 - (BOOL)prefersStatusBarHidden; //设置状态栏是否可见
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation //使用动画来隐藏状态栏
// app加载完毕的时候调用(一般只调用一次) - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions //app进入前台的时候调用(app显示出来) - (void)applicationWillEnterForeground:(UIApplication *)application //当app获得焦点的时候调用(这时候整个app的UI控件都能正常使用) - (void)applicationDidBecomeActive:(UIApplication *)application //app失去焦点的时候调用(UI控件不能正常使用) - (void)applicationWillResignActive:(UIApplication *)application // app进入后台的时候调用(app消失不见) - (void)applicationDidEnterBackground:(UIApplication *)application //app进入后台休眠时调用,此时不能接收事情(比如关闭)app关闭的时候调用(一般情况下不会调用) - (void)applicationWillTerminate:(UIApplication *)application
- (void)makeKeyWindow; // 让当前UIWindow变成keyWindow(主窗口) - (void)makeKeyAndVisible; // 让当前UIWindow变成keyWindow,并显示出来 - (void)addSubview:(UIView *)view; // 直接将view添加到UIWindow中,但并不会理会view对应的UIViewController @property(nonatomic,retain) UIViewController *rootViewController; // 自动将rootViewController的view添加到UIWindow中,负责管理rootViewController的生命周期 [UIApplication sharedApplication].windows // 在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象 // (平时输入文字弹出的键盘,就处在一个新的UIWindow中) [UIApplication sharedApplication].keyWindow // 用来接收键盘以及非触摸类的消息事件的UIWindow,而且程序中每个时刻只能有一个UIWindow是keyWindow。如果某个UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindow view.window // 获得某个UIView所在的UIWindow
- main函数
- 创建UIApplication对象,创建UIApplication的delegate对象
- delegate对象开始处理(监听)系统事件(没有storyboard),程序启动完毕的时候, 就会调用代理application:didFinishLaunchingWithOptions:方法,在application:didFinishLaunchingWithOptions:中创建UIWindow,创建和设置UIWindow的rootViewController,显示窗口
- 根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard),创建UIWindow,创建和设置UIWindow的rootViewController,显示窗口
1 int main(int argc, char * argv[]) { 2 @autoreleasepool { 3 return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 4 } 5 } 6
- argc、argv:直接传递给UIApplicationMain进行相关处理即可
- principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值
- delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。