关于ios:IOS-UIViewController-API生命周期详解

6次阅读

共计 1975 个字符,预计需要花费 5 分钟才能阅读完成。

在 UIKit 框架中只有一个根制图控制器。视图控制器用来治理界面和解决界面的类对象,程序启动前必须创立根视图控制器。所有视图控制器都须要自定义实现,必须继承于 UIViewController 实现。xcode 新创建的我的项目默认是通过 info.plist 文件配置 main.storyboard 文件主动创立根视图 ViewController。继承于 UIView

创立根视图控制器
#import "AppDeletegate.h"
...code
- (void) didFinishLuanchingWithOptions:(NSDictionary *)luanchOptions {
    // 设置屏幕宽高
    self.window = [[UIWindow alloc] initWithFrame: [UIScreen mainScreen]];
    
    // 设置视图控制器为 window 根节点
    self.window.rootViewController = [[UIViewController alloc] init];
}
...code
自定义 ViewController

#import "ViewController.h"
@implementation ViewController
// 当视图控制器第一次被加载显示视图
- (void) viewDidLoad{[super viewDidLoad];
    
    // 创立子视图
    UIView *view = [[UIView alloc] init];
    view.frame = CGReactMake(0, 0, 300, 45);
    view.backgroundColor = [UIColor greenColor];
    
    // 退出视图
    [self.view addSubView:view];
}
@end
增加子视图控制器
#import "ViewController.h"
@implementation ViewController
// 当视图控制器第一次被加载显示视图
- (void) viewDidLoad{[super viewDidLoad];
    self.view.backgroundColor = [UIColor blueColor];
}
// 当屏幕被点击时候触发
-(void)touchesBegan:(NNSet<UITouch *> *)touches  withEvent:(UIEvent *)event{UIViewController *sonViewController = [[UIViewController alloc] init];
    
    [self presentViewController: sonViewController animate:YES complation:nil];
}
@end
API
  • (void)touchesBegan:(NNSet<UITouch *> *)touches withEvent:(UIEvent *)event 当屏幕被点击时候触发。
  • (void)presentViewController:(UIViewController *) animate:(BOOL) completion:(callbacl) 显示一个视图控制器到屏幕上,参数 1:UIViewController 新的视图控制器对象,参数 2:animate 是否开启动画成果,参数 3:completion: 执行实现后的回调函数,不须要传 nil 即可。
  • (void)dismissViewControllerAniamted:(BOOL) completion:(callback) 使以后视图控制器在屏幕隐没,参数 1:animte 是否开启动画成果,参数 2:completion 执行实现后的回调函数,不须要传 nil 即可。
  • (void)removeFromSuperView 将以后视图实例从父级删除
  • (void)bringSubViewToFront: UIView* 将一个子视图调整到最顶级绘制
  • (void)sendSubViewToBack: UIView* 将一个子视图调整到最低层绘制

#### 生命钩子

    • (void)viewDidLoad 加载内存时候触发, 通常用于初始化子节点布局和资源应用
    • (void)viewWillAppear:(BOOL)animated 行将显示时候触发
    • (void)viewDIdLayoutSubviews 布局子组件实现时候触发
    • (void)viewWillLayoutSubviews 当渲染时候布局子组件触发

      • (void)viewDidAppear:(BOOL)animated 曾经显示时触发

        • (void)viewWillDisappear:(BOOL)animated 行将隐没时候触发
    • (void)viewDidDisappear:(BOOL)animated 隐没时候触发
    • (viod) didReceiveMemoryWarning 当内存不足时候触发
    正文完
     0