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 的方法理解笔记相关推荐

  1. iOS initWithFrame、initWithCoder、awakeFromNib的区别解析

    当我们需要自定义一个View控件时,会有 initWithFrame.initWithCoder.awakeFromNib 这三个系统方法,关于这三个方法何时调用,如何调用,有时候可能很多人会弄混淆. ...

  2. 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 理解+笔记+ ...

  3. 人力资源之选人方法学习笔记_职位胜任素质模型

    续接上篇:人力资源之选人方法学习笔记_建立科学的人才观   本篇主要讲解关于职位胜任素质模型课程的学习笔记. 什么是职位胜任素质模型 就是用行为方式来定义员工为了完成某项工作应该具备的知识.技能等特质 ...

  4. MIT四足机器人Cheetah 3控制方案理解笔记(2)——Convex Mpc身体姿态控制

    在"MIT四足机器人Cheetah 3控制方案理解笔记(1)"中,主要简单的总结了下一般情况下腿足机器人的摆动腿控制方法以及Cheetah 3的基于集中质量模型的平衡控制器.此外, ...

  5. 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 理解+笔记+翻 ...

  6. iphone UIView的一些基本方法理解

    原文链接地址:http://www.cocoachina.com/bbs/read.php?tid=38766 UIView的一些基本方法理解 UIView的一些基本方法理解:loadView.vie ...

  7. 一、css清除浮动方法学习笔记总结(超详细,简单易懂)

    ** css清除浮动方法学习笔记总结(超详细,简单易懂) ** 问题: 上图中,由于container(父级元素)未设置高度,其内部子元素设置了float浮动,导致与container同级(也就是co ...

  8. K2评分方法理解实例

    文章目录 贝叶斯网络:K2评分方法理解实例 贝叶斯网络:K2评分方法理解实例

  9. 强制 转换string 的一个简单方法(笔记)

    强制 转换string 的一个简单方法(笔记) //05  eg. //: c05:ToolTest.java // From 'Thinking in Java, 2nd ed.' by Bruce ...

最新文章

  1. 在CentOS 6.9 x86_64上从源码安装xz命令的方法
  2. 利用Spring的aop原理实现系统级日志管理 附带源码
  3. UDP转TCP隧道工具udptunnel
  4. pymysql dataframe 写入sql
  5. python的re2和re区别_浅谈Python中re.match()和re.search()的使用及区别
  6. 【计算机基础】存储器层次 Memory hierarchy
  7. 反应式服务中的线程本地状态可用性
  8. 《WinForm开发系列之控件篇》Item13 DirectoryEntry(暂无)
  9. mysql主从复制 lvs+ keepalived
  10. 第一章、第一节 Angular基础
  11. supesite 相关 修改
  12. K8S_Google工作笔记0008---通过二进制方式_搭建集群介绍
  13. 22.Windows及linux下gerapy使用
  14. android别踩白块小游戏,手摸手带你实现 小游戏别踩白块儿 -- 内有游戏链接
  15. RPC系列协议--rfc1191--Path MTU Discovery
  16. C++C++ 编写GoFGoF设计模式里Lexi样例
  17. 新电脑如何分盘---傻瓜式教学
  18. css布局——定位布局
  19. 计算机工程技术学术活动,第六届电气、电子和计算机工程研究国际学术研讨会将于南京举办!...
  20. efcore 实体配置_.NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记...

热门文章

  1. CGAL1_1 Three Points and One Segment
  2. 多输出模型的评价和模型预测
  3. 根号x_【深情攻X自卑受】糖与盐by根号三
  4. 如何产生好的词向量?
  5. 将Python和R整合进一个数据分析流程
  6. oracle 查看日志组切换状态_【DB笔试面试800】在Oracle中,归档和非归档模式之间的不同点是什么?它们各自的优缺点是什么?...
  7. python堆结构heapq
  8. elasticsearch docker无法挂载_Docker 容器监控方案怎么选?看看这套开源方案
  9. Flutter教程(1)——快速预览
  10. 全图化引擎(AI·OS)中的编译技术