多控制器-1

笔记

01-项目中常见的文件-LaunchScreen-.jpg
02-项目中常见的文件-info.plist-.jpg
04-UIApplication单例.jpg
笔记.jpg

Xmind

Snip20170212_171.png
Snip20170212_172.png
多控制器-1_第1张图片
Snip20170212_173.png
多控制器-1_第2张图片
Snip20170212_174.png
多控制器-1_第3张图片
Snip20170212_175.png
Snip20170212_176.png
多控制器-1_第4张图片
Snip20170212_177.png
多控制器-1_第5张图片
Snip20170212_178.png
多控制器-1_第6张图片
Snip20170212_179.png
多控制器-1_第7张图片
Snip20170212_180.png
多控制器-1_第8张图片
Snip20170212_181.png
多控制器-1_第9张图片
Snip20170212_182.png
多控制器-1_第10张图片
Snip20170212_183.png

PPT

1-状态栏

  • 从iOS7开始,系统提供了2种管理状态栏的方式
  • 通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏)
  • 通过UIApplication管理(一个应用程序的状态栏都由它统一管理)
  • 在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式
  • 状态栏的样式
    -(UIStatusBarStyle)preferredStatusBarStyle;
  • 状态栏的可见性
    -(BOOL)prefersStatusBarHidden;
    利用UIApplication来管理状态栏
  • 利用UIApplication来管理状态栏
    • 如果想利用UIApplication来管理状态栏,首先得修改Info.plist的设置


      图片 1.png

2-iOS程序启动过程

多控制器-1_第11张图片
Snip20170212_168.png

UIApplicationMain

  • 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函数才返回

3-UIWindow

  • 一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow也就说,没有UIWindow,就看不见任何UI界面
  • 添加UIView到UIWindow中两种常见方式:
  • -(void)addSubview:(UIView *)view;
    直接将view添加到UIWindow中,但并不会理会view对应的UIViewController
  • @property(nonatomic,retain) UIViewController *rootViewController;
    自动将rootViewController的view添加到UIWindow中,负责管理rootViewController的生命周期
  • 常用方法
  • -(void)makeKeyWindow;
    让当前UIWindow变成keyWindow(主窗口)
  • -(void)makeKeyAndVisible;
    让当前UIWindow变成keyWindow,并显示出来

UIWindow的获得

  • [UIApplication sharedApplication].windows
    • 在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象
      (平时输入文字弹出的键盘,就处在一个新的UIWindow中)
  • [UIApplication sharedApplication].keyWindow
    • 用来接收键盘以及非触摸类的消息事件的UIWindow,而且程序中每个时刻只能有一个UIWindow是keyWindow。如果某个UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindow
  • view.window
    • 获得某个UIView所在的UIWindow

4-关系图

多控制器-1_第12张图片
Snip20170212_170.png

你可能感兴趣的:(多控制器-1)