initWithFrame 与 initWithCoder 、awakeFromNib 的方法理解笔记
1. initWithFrame方法是什么?
initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸)。
当然,其他UI对象,也有initWithFrame方法,但是,我们以UIView为例,来搞清楚initWithFrame方法。
2.什么时候用initWithFrame方法?
简单的说,我们用编程方式申明,创建UIView对象时,使用initWithFrame方法。
在此,我们必须搞清楚,两种方式来进行初始化UIView。
3.使用 Interface Builder 方式。
这种方式,就是使用nib文件。通常我们说的“拖控件” 的方式。
实际编程中,我们如果用Interface Builder 方式创建了UIView对象。(也就是,用拖控件的方式)
那么,initWithFrame方法方法是不会被调用的。因为nib文件已经知道如何初始化该View。(因为,我们在拖该view的时候,就定义好了长、宽、背景等属性)。
这时候,会调用initWithCoder方法,我们可以用initWithCoder方法来重新定义我们在nib中已经设置的各项属性。
这就是为什么使用initWithCoder:的原因,因为xxxx.xib的view是xxxxView类型,而不是UIView类型了,所以其实是从nib中加载对象实例。
综上所述:
当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化
- (id)initWithFrame:(CGRect)frame
{
if (self =[superinitWithFrame:frame]) {
// 初始化代码
}
return self;
}
用于视图加载nib文件,从nib中加载对象实例时,使用 initWithCoder初始化这些实例对象
- (id)initWithCoder:(NSCoder*)coder
{
if (self =[superinitWithcoder:coder]) {
// 初始化代码
}
return self;
}
1、用Xib创建控件,对于控件的后续操作都写在initWithCoder或aweakFromNib方法中;
2、纯代码写创建的控件,对于控件的后续操作都写在initWithFrame方法中;
3、添加子控件时,注意布局(frame的获得),合理灵活的使用xib加载控件;
4、至于initWithCoder和aweakFromNib的区别在后面再做讨论(关于通过xib加载控制器)。
链接
转载于:https://www.cnblogs.com/benpaobadaniu/p/5883151.html
initWithFrame 与 initWithCoder 、awakeFromNib 的方法理解笔记相关推荐
- iOS initWithFrame、initWithCoder、awakeFromNib的区别解析
当我们需要自定义一个View控件时,会有 initWithFrame.initWithCoder.awakeFromNib 这三个系统方法,关于这三个方法何时调用,如何调用,有时候可能很多人会弄混淆. ...
- Missing Tag Identification in COTS RFID Systems: Bridging the Gap between Theory and Practice 理解+笔记
Missing Tag Identification in COTS RFID Systems: Bridging the Gap between Theory and Practice 理解+笔记+ ...
- 人力资源之选人方法学习笔记_职位胜任素质模型
续接上篇:人力资源之选人方法学习笔记_建立科学的人才观 本篇主要讲解关于职位胜任素质模型课程的学习笔记. 什么是职位胜任素质模型 就是用行为方式来定义员工为了完成某项工作应该具备的知识.技能等特质 ...
- MIT四足机器人Cheetah 3控制方案理解笔记(2)——Convex Mpc身体姿态控制
在"MIT四足机器人Cheetah 3控制方案理解笔记(1)"中,主要简单的总结了下一般情况下腿足机器人的摆动腿控制方法以及Cheetah 3的基于集中质量模型的平衡控制器.此外, ...
- Fast and Accurate Detection of Unknown Tags for RFID Systems – Hash Collisions are Desirable 理解+笔记
Fast and Accurate Detection of Unknown Tags for RFID Systems – Hash Collisions are Desirable 理解+笔记+翻 ...
- iphone UIView的一些基本方法理解
原文链接地址:http://www.cocoachina.com/bbs/read.php?tid=38766 UIView的一些基本方法理解 UIView的一些基本方法理解:loadView.vie ...
- 一、css清除浮动方法学习笔记总结(超详细,简单易懂)
** css清除浮动方法学习笔记总结(超详细,简单易懂) ** 问题: 上图中,由于container(父级元素)未设置高度,其内部子元素设置了float浮动,导致与container同级(也就是co ...
- K2评分方法理解实例
文章目录 贝叶斯网络:K2评分方法理解实例 贝叶斯网络:K2评分方法理解实例
- 强制 转换string 的一个简单方法(笔记)
强制 转换string 的一个简单方法(笔记) //05 eg. //: c05:ToolTest.java // From 'Thinking in Java, 2nd ed.' by Bruce ...
最新文章
- 在CentOS 6.9 x86_64上从源码安装xz命令的方法
- 利用Spring的aop原理实现系统级日志管理 附带源码
- UDP转TCP隧道工具udptunnel
- pymysql dataframe 写入sql
- python的re2和re区别_浅谈Python中re.match()和re.search()的使用及区别
- 【计算机基础】存储器层次 Memory hierarchy
- 反应式服务中的线程本地状态可用性
- 《WinForm开发系列之控件篇》Item13 DirectoryEntry(暂无)
- mysql主从复制 lvs+ keepalived
- 第一章、第一节 Angular基础
- supesite 相关 修改
- K8S_Google工作笔记0008---通过二进制方式_搭建集群介绍
- 22.Windows及linux下gerapy使用
- android别踩白块小游戏,手摸手带你实现 小游戏别踩白块儿 -- 内有游戏链接
- RPC系列协议--rfc1191--Path MTU Discovery
- C++C++ 编写GoFGoF设计模式里Lexi样例
- 新电脑如何分盘---傻瓜式教学
- css布局——定位布局
- 计算机工程技术学术活动,第六届电气、电子和计算机工程研究国际学术研讨会将于南京举办!...
- efcore 实体配置_.NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记...
热门文章
- CGAL1_1 Three Points and One Segment
- 多输出模型的评价和模型预测
- 根号x_【深情攻X自卑受】糖与盐by根号三
- 如何产生好的词向量?
- 将Python和R整合进一个数据分析流程
- oracle 查看日志组切换状态_【DB笔试面试800】在Oracle中,归档和非归档模式之间的不同点是什么?它们各自的优缺点是什么?...
- python堆结构heapq
- elasticsearch docker无法挂载_Docker 容器监控方案怎么选?看看这套开源方案
- Flutter教程(1)——快速预览
- 全图化引擎(AI·OS)中的编译技术