• iOS学习之视图加载过程中会触发的方法(loadView/viewDidLoad/didReceiveMemoryWarning)


    1.loadView

    这是视图控制器用来加载根视图的方法;

    如果需要将自定义的视图作为根视图,则不需要调用父类对该方法的实现([super loadView]);直接将自定义视图通过self.view定义为视图控制器的根视图;

    自定义视图中的简单响应事件也应由视图控制器来进行处理,写在此方法内;

    2.viewDIdLoad

    当视图控制器的根视图加载完成之后触发该方法;(也就是loadView调用完成之后会立即调用该方法);

    需要调用父类对该方法的实现;

    该方法可以对根视图进行简单的一些设置,比如背景颜色等等;

    3.viewWillAppear:(BOOL)animated;  //当视图控制器的根视图将要显示时触发;

    4.viewDidAppear:(BOOL)animated;  //当视图控制器的根视图显示时触发;

    5.viewWillDisappear:(BOOL)animated;  //当视图控制器的根视图将要消失时触发;

    6.viewDidDisappear:(BOOL)animated;  //当视图控制器的根视图消失时触发;

    7.didReceiveMemoryWarning;//当收到内存警告时触发, 此时需要释放掉暂时不使用的资源,以及可重建对象;

    1 - (void)didReceiveMemoryWarning {
    2     [super didReceiveMemoryWarning];
    3     if ([self isViewLoaded] && !self.view.window) {
    4         self.view = nil;
    5     }
    6 }
    7 //[self isViewLoaded] 看视图是否已经加载了
    8 //self.view.window 看根视图有没有在window上展示

     

    #pragma mark -- 和屏幕旋转相关的方法

    8.设置当设备发生旋转时,当前界面是否发生变化,支持旋转

    - (BOOL)shouldAutorotate {

        return YES;

    }

    9.设置当前界面支持的旋转的方向. 必须要依赖于当前应用程序支持的方向;

    - (NSUInteger)supportedInterfaceOrientations {

        return UIInterfaceOrientationMaskAll;//支持所有方向

    }

    10.当屏幕旋转时触发,iOS8之后有效

    - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {

        //size 表示旋转之后的屏幕的尺寸;

        NSLog(@"%@",NSStringFromCGSize(size)); //输出此时的屏幕尺寸;

    }

     

    关于调用父类的方法:

    //父类对该方法的实现,可以用来帮助我们对视图进行一些初始化(有些初始化工作我们是不知道的,也看不到,所以一定要调用);

    //当重写从父类继承过来的方法时,如果不知道父类对该方法是如何实现的,记得要使用super调用该方法的实现;

    关于方法中的[super xxx]调用父类的方法,如果不需要额外添加内容,有参数的直接return YES就行了.

     

    //补充一个:

    -(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

    这是视图控制器的指定初始化方法,无论调用哪个方法,改初始化方法都会被触发;

    -(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            //完成本类独有的初始化操作.
        }
        return self;
    }

     

  • 相关阅读:
    ORACLE日期时间函数大全
    orcal基础
    javaweb学习总结——基于Servlet+JSP+JavaBean开发模式的用户登录注册
    一个DataTable赋值给另一个DataTable的常用方法
    ios开发 解释器和编译器
    ios面试题(五)-多线程
    ios面试题(四)-block
    ios面试题(三)
    ios开发面试题(二)
    ios开发面试题(一)
  • 原文地址:https://www.cnblogs.com/ErosLii/p/4471096.html
Copyright © 2020-2023  润新知