iOS开发教程之UIView和UIViewController的生命周期详解

前言

iOS开发中,创建View常见的两种方式一个是纯代码,一个是借助于XIB;创建ViewController常见的也有两种方式一个是纯代码,一个是借助于StoryBoard。

通过交流我发现很多童鞋对这些概念都很模糊,于是通过实验写一篇博客供参考。

重写View的如下方法

@implementation YFView

-(instancetype)init{

 self = [super init];

 NSLog(@"%s", __func__);

 return self;
}

-(instancetype)initWithFrame:(CGRect)frame{

 self = [super initWithFrame:(CGRect)frame];

 NSLog(@"%s", __func__);

 return self;

}

-(instancetype)initWithCoder:(NSCoder *)aDecoder{

 self = [super initWithCoder:aDecoder];

 NSLog(@"%s", __func__);

 return self;

}

-(void)awakeFromNib{

 [super awakeFromNib];

 NSLog(@"%s", __func__);
}

-(void)layoutSubviews{

 NSLog(@"%s", __func__);

}

@end

重写ViewController的如下方法

@implementation YFViewController

-(void)loadView{

 NSLog(@"%s", __func__);

 [super loadView];
}

- (void)viewDidLoad {
 [super viewDidLoad];
 // Do any additional setup after loading the view.

 NSLog(@"%s", __func__);

 self.view.backgroundColor = [UIColor redColor];
}

-(void)viewDidAppear:(BOOL)animated{

 NSLog(@"%s", __func__);

 [super viewDidAppear:animated];

}

-(instancetype)init{

 self = [super init];

 NSLog(@"%s", __func__);

 return self;
}

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

 self = [super initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil];

 NSLog(@"%s", __func__);

 return self;

}

-(instancetype)initWithCoder:(NSCoder *)aDecoder{

 self = [super initWithCoder:aDecoder];

 NSLog(@"%s", __func__);

 return self;

}

-(void)awakeFromNib{

 NSLog(@"%s", __func__);

 [super awakeFromNib];
}

@end

结论总结

如果控制器是直接通过代码创建出来的,并且调用方法为[[YFViewController alloc]init]创建VC的生命周期为:

-[YFViewController initWithNibName:bundle:]
-[YFViewController init]
-[YFViewController loadView]
-[YFViewController viewDidLoad]
-[YFViewController viewDidAppear:]

如果创建控制器时勾选了XIB,那么调用方法为[[YFViewController alloc]init]创建VC时的生命周期为:

-[YFViewController initWithNibName:bundle:]
-[YFViewController init]
-[YFViewController loadView]
-[YFViewController viewDidLoad]
-[YFViewController viewDidAppear:]

如果是通过SB创建控制器,那么VC的生命周期为:

-[ViewController initWithCoder:]
-[ViewController awakeFromNib]
-[ViewController loadView]
-[ViewController viewDidLoad]
-[ViewController viewDidAppear:]

如果纯代码创建UIView,调用方式为YFView *yfView = [[YFView alloc]init];那么它的生命周期为:

-[YFView initWithFrame:]
-[YFView init]
-[YFView layoutSubviews]

如果纯代码创建UIView,调用方式为YFView *yfView = [[YFView alloc]initWithFrame:[UIScreen mainScreen].bounds];那么它的生命周期为:

-[YFView initWithFrame:]
-[YFView layoutSubviews]

如果通过XIB创建UIView,调用方式为NSArray *array = [[NSBundle mainBundle]loadNibNamed:@"YFView" owner:nil options:nil];[array lastObject];那么它的生命周期为:

-[YFView initWithCoder:]
-[YFView awakeFromNib]
-[YFView layoutSubviews]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

您可能感兴趣的文章:

  • IOS UIView的生命周期的实例详解
  • iOS App开发中UIViewController类的使用教程
(0)

相关推荐

  • IOS UIView的生命周期的实例详解

    IOS UIView的生命周期的实例详解 任何对象的者有一个生命周期,即都存在一个实例化到销毁的过程. UIView对象也不例外,那么UIView从init/new开始后,直到dealloc结束的过程中都经历了哪些过程呢? 首先自定义继承自UIView的对象LifeView #import <UIKit/UIKit.h> @interface LifeView : UIView @end #import "LifeView.h" @interface LifeView ()

  • iOS App开发中UIViewController类的使用教程

    一.引言 作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有条有理的展示在我们的View层上.iOS中的UIViewController是UIKit框架中最基本的一个类.从第一个UI视图到复杂完整项目,都离不开UIViewController作为基础.基于UIViewController的封装和扩展,也能够出色的完成各种复杂界面逻辑.这里旨在讨论UIViewController的生命周期和属性方法,在最基础的东西上,往往会

  • iOS开发教程之UIView和UIViewController的生命周期详解

    前言 iOS开发中,创建View常见的两种方式一个是纯代码,一个是借助于XIB:创建ViewController常见的也有两种方式一个是纯代码,一个是借助于StoryBoard. 通过交流我发现很多童鞋对这些概念都很模糊,于是通过实验写一篇博客供参考. 重写View的如下方法 @implementation YFView -(instancetype)init{ self = [super init]; NSLog(@"%s", __func__); return self; } -(

  • Java开发学习之Bean的作用域和生命周期详解

    目录 一.Bean 的作用域 二.Spring 的执行流程 三.Bean 的生命周期 一.Bean 的作用域 在之前学习Java基础的时候,有接触到作用域这样的概念.一个变量并不一定在任何区域都是有效的,限定这个变量的可用性的代码范围就是该变量的作用域. 但是在这里 Bean 的作用域的概念和以前所认为的作用域有所不同. Bean 的作用域是指 Bean 在 Spring 整个框架中的某种行为模式. 接下来,将会举一个案例来讲讲什么是作用域,什么是行为模式 案例概要: 创建一个共有的 Bean

  • iOS开发中以application/json上传文件实例详解

    本文通过实例代码给大家讲解iOS中以application/json上传文件的形式,具体内容详情大家参考下本文. 在和sever后台交互的过程中.有时候.他们需要我们iOS开发者以"application/json"形式上传. NSString *accessUrl = [NSString stringWithFormat:@"%@/xxx",@"https://www.xxxxx.com:xxxx"]; NSMutableURLRequest

  • iOS开发retina屏幕下的点与像素关系详解

    目录 引言 I iOS中点与像素有什么关系? II 图片使用的相关注意事项 2.1 推荐使用png格式 2.2 关于图像的实例化 2.3 动画结束之后清除帧动画数组 III 设置状态栏字体颜色 3.1 方式一 3.2 方式二 see also 引言 提交app store的时候 需要一张1024*1024的 如果不设置这两种的尺寸启动页的话,在4英寸.3.5英寸的设备上展示不了启动页,app 的高度也默认都是矮的960px.** 注意@3x 提供给开发的px 为12422208 ,但真实的px

  • Java开发学习之Bean的生命周期详解

    目录 一.什么是生命周期 二.环境准备 三.生命周期设置 步骤1:添加初始化和销毁方法 步骤2:配置生命周期 步骤3:运行程序 四.close关闭容器 五.注册钩子关闭容器 六.bean生命周期总结 一.什么是生命周期 首先理解下什么是生命周期? 从创建到消亡的完整过程,例如人从出生到死亡的整个过程就是一个生命周期. bean生命周期是什么? bean对象从创建到销毁的整体过程. bean生命周期控制是什么? 在bean创建后到销毁前做一些事情. 二.环境准备 环境搭建: 创建一个Maven项目

  • Android开发Activity的生命周期详解

    目录 前言 典型情况下的生命周期分析 前言 Android生命周期分为两部分: (1)典型情况下的生命周期. (2)异常情况下的生命周期. 典型情况下的生命周期分析 图1 Activity的生命周期图解 图2 Activity生命周期的金字塔图 (1)典型情况下的生命周期指在有用户参与的情况下,Activity所经过的生命周期的改变,正常情况下,Activity的常用生命周期有以下几种情况: onCreate():Activity启动后第一个被调用的函数,常用来进行Activity的初始化,如创

  • iOS开发教程之XLForm的基本使用方法

    前言 在iOS开发中,开发"表单"界面,字段稍微多一点的一般都用UITableView来做,而XLForm就是这样一个框架,它是创建动态表格视图最牛逼的iOS库, 用它实现表单功能,非常简单,省心省力.但是很可惜,搜索了很多文章都只是翻译官方文档,很多人在使用该库的时候可能都被官方文档带走远了,不知道如何具体使用.正好最近也要用到这个库,所以写个入门使用文章供大家参考. 以下是这个库一个简单的结构图: 一. 导入项目 使用CocoaPods或者手动导入库文件,本人选择直接导入项目源文件

  • iOS开发教程之APP内部切换语言的实现方法

    前言 相信大家在iOS开发中都遇到了一个问题,随着APP越来越完善,很多APP都做了国际化,也实现了APP内部切换语言.那么如何实现的呢?下面来一起看看详细的介绍吧 原理 国际化都会走到NSBundle的- (NSString *)localizedStringForKey:(NSString *)key value:(nullable NSString *)value table:(nullable NSString *)tableName方法,使用自定义Bundle替换NSBundle,通过

  • iOS学习教程之UIView中坐标转换详解

    本文主要介绍的是关于iOS UIView坐标转换的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 在开发中我们经常会需要判断两个控件是否包含重叠,此时如果控件A和B的坐标原点如果不确定的话,那么肯定会导致比较不正确发生错误 判断包含重叠的代码如下: CGRectContainsRect(<#CGRect rect1#>, <#CGRect rect2#>) CGRectContainsPoint(<#CGRect rect#>, <#CGPoint

  • iOS开发教程之Status Bar状态栏设置的方法汇总

    前言 我们在很多app中可以看到不同与导航栏的状态栏的颜色,比如下面: 状态栏 个人觉得 iOS 的 Status Bar 状态栏也是一个比较坑的地方,所以还是写一个总结,有遇到这方面问题的朋友可以看一下. 下面话不多说了,来随着小编一起学习学习吧 Status Bar 状态栏的隐藏 1. 通过设置 Info.plist 文件实现状态栏的全局隐藏 在 Info.plist 文件中添加 Status bar is initially hidden 设置为 YES ,这个是隐藏 App 在 Lunc

随机推荐