有时候,知道initWithFrame方法如何用,但是么有弄明白initWithFrame方法到底是什么?

那就通过查资料弄明白。

 
1. initWithFrame方法是什么?
initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸)。
当然,其他UI对象,也有initWithFrame方法,但是,我们以UIView为例,来搞清楚initWithFrame方法。
2.什么时候用initWithFrame方法?
简单的说,我们用编程方式申明,创建UIView对象时,使用initWithFrame方法。
在此,我们必须搞清楚,两种方式来进行初始化UIView。
1.使用 Interface Builder 方式。
这种方式,就是使用nib文件。通常我们说的“拖控件” 的方式。
实际编程中,我们如果用Interface Builder 方式创建了UIView对象。(也就是,用拖控件的方式)
那么,initWithFrame方法方法是不会被调用的。因为nib文件已经知道如何初始化该View。(因为,我们在拖该view的时候,就定义好了长、宽、背景等属性)。
这时候,会调用initWithCoder方法,我们可以用initWithCoder方法来重新定义我们在nib中已经设置的各项属性。
2.使用编程方式。
就是我们声明一个UIView的子类,进行“手工”编写代码的方式。
实际编程中,我们使用编程方式下,来创建一个UIView或者创建UIView的子类。这时候,将调用initWithFrame方法,来实例化UIView。
特别注意,如果在子类中重载initWithFrame方法,必须先调用父类的initWithFrame方法。在对自定义的UIView子类进行初始化操作。
比如:

- (id)initWithFrame:(CGRect)frame{

self = [super initWithFrame:frame];// 先调用父类的initWithFrame方法

if (self) {

// 再自定义该类(UIView子类)的初始化操作。

_scrollView = [[UIScrollView alloc] initWithFrame:self.bounds];

[_scrollView setFrame:CGRectMake(0, 0, 320, 480)];

_scrollView.contentSize = CGSizeMake(320*3, 480);

[self addSubview:_scrollView];

}

return self;

}

转载于:https://www.cnblogs.com/yzjxdz/p/4840678.html

initWithFrame方法的理解(转)相关推荐

  1. 【转】五、谈扩展方法的理解

    [转]五.谈扩展方法的理解 为什么要用扩展方法 在说什么是扩展方法之前我们先来说说为什么要用扩展方法. 首先我们定义一个 Person 类: public class Person {/// < ...

  2. python threading模块的方法_Python THREADING模块中的JOIN()方法深入理解

    看了oschina上的两个代码,受益匪浅.其中对join()方法不理解,看python官网文档的介绍: join([timeout]):等待直到进程结束.这将阻塞正在调用的线程,直到被调用join() ...

  3. sklearn中GBDT的一些参数、属性、方法的理解

    文章目录 GBDT 分类器 引入 重要参数 loss learning_rate subsample n_estimators criterion max_depth min_samples_leaf ...

  4. 频域分析方法的理解(信号、频谱、能量谱、功率谱、倒频谱、小波分析)(终极教程)

    信号频域分析方法的理解(频谱.能量谱.功率谱.倒频谱.小波分析) 参考文献,值得一读 https://blog.csdn.net/fengzhuqiaoqiu/article/details/1011 ...

  5. hashCode()、equals()以及compareTo()方法的理解

    原文出自:http://blog.sina.com.cn/s/blog_50d936c40100nvzz.html hashCode().equals()以及compareTo()方法的理解 转载▼ ...

  6. [react] 请说说你对react的render方法的理解

    [react] 请说说你对react的render方法的理解 render是class组件中必须被重载的方法,组件执行render方法的条件如下: 初始渲染 this.setState方法,参数不能为 ...

  7. [css] 请描述下你对translate()方法的理解

    [css] 请描述下你对translate()方法的理解 Single length/percentage value一个长度值或百分比表示X轴和Y轴使用一样的值进行二维上的平移.等同于transla ...

  8. C#回调函数应用示例,形象比喻方法助理解

    C#回调函数应用示例,形象比喻方法助理解,整理了一个简单的例子来说明回调函数的用法: namespace CallBackFunction {     class Program     {      ...

  9. java方法的理解、调用栈与异常处理

    java方法的理解.调用栈与异常处理 参考文章: (1)java方法的理解.调用栈与异常处理 (2)https://www.cnblogs.com/yangxiansen/p/7860058.html ...

最新文章

  1. windows Nvidia GPU指令
  2. python数字字符串乘以2_Python基础(2)_数字和字符串类型
  3. fast-rcnn win10 tensorflow部署
  4. 高精度加减乘法小程序
  5. 汇编语言的简答入门--斐波那契数列(递归)
  6. 《统计学习方法》读书笔记——感知机(原理+代码实现)
  7. 我是一名服装公司的老板娘,年收入千万上下
  8. 主定理(Master Theorem)与时间复杂度
  9. JAVA Swing GUI设计 WindowBuilder Pro Container使用大全6——JLayeredPane使用
  10. NJUPT_CTF easychallenge 解题脚本
  11. eclipse下的mybatis插件:MyBatipse
  12. 聊天机器人语料批量处理-自动提取关键词并自动写入文件
  13. xsmax是大黑边?_苹果iPhone11和xsmax,8p x xr xs怎么选?干货分享!
  14. 【通俗易懂的通信】马尔可夫过Ⅲ:马尔可夫链的极限性态与平稳分布
  15. Centos 7.5 1804安装绿联PL2303串口驱动
  16. 无人驾驶:高精地图与定位
  17. Linux常见的使用命令
  18. ROS域名解析问题记录(蓝桥云课ros.asc)
  19. YUV转RGB查表方式的代码
  20. 子类继承多个父类总结

热门文章

  1. ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory
  2. 如何复位一个流的failbit和eofbit
  3. 手写单隐层神经网络_鸢尾花分类(matlab实现)
  4. 猜想:汇编指令push和pop对sp的处理顺序缘由
  5. android 仿ios tabs,React Native兼容iOS Android的TabBar
  6. 华为mstp多生成树配置_【交换机】交换机如何配置MSTP(多实例生成树协议)
  7. centos6mysql编译安装_centos6编译安装MySQL
  8. excel多个工作表求和案例
  9. Struts2之类型转换
  10. CentOS 7 安装方式汇总