UIView的layoutSubviews,initWithFrame,initWithCoder方法
****************************layoutSubviews************************************
layoutSubviews是UIView中的属性方法,即只要继承于UIView,就可以使用这个方法,这个方法也很强大,以下是他的触发时机:
1、init初始化不会触发layoutSubviews
2、addSubview会触发layoutSubviews
3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
4、滚动一个UIScrollView会触发layoutSubviews
5、旋转Screen会触发父UIView上的layoutSubviews事件
6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件
在这些触发情况下,我们就可以妙用他,比如说改变数据等等,这是个很不错的方法
而且我们也可以手动调用,即
[self setNeedsLayout];
注意:调用layoutSubviews,也需要调用它的父类方法,即
[super layoutSubviews]
传说如果不调用的话会出现奇怪的问题。
************************************initWithFrame,initWithCoder********************************
- (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;
}
当我们所写的程序里没用用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;
}
转载于:https://www.cnblogs.com/yintingting/p/4540224.html
UIView的layoutSubviews,initWithFrame,initWithCoder方法相关推荐
- UIView的layoutSubviews和drawRect方法何时调用
UIView的layoutSubviews和drawRect方法何时调用 转自:http://jianyu996.blog.163.com/blog/static/1121145552013051 ...
- UIView的layoutSubviews和drawRect
本文转载至 http://my.oschina.net/megan/blog/143027 UIView的setNeedsDisplay和setNeedsLayout方法.首先两个方法都是异步执行的. ...
- 谈谈UIView的几个layout方法-layoutSubviews、layoutIfNeeded、
2019独角兽企业重金招聘Python工程师标准>>> 从百度上搜索了一下layoutSubviews的用处,以下是搜索的结果,当然,笔者是会一一验证的. 1. init初始化不会触 ...
- UIView及其分类的属性方法定义
UIView是iOS开发中最熟悉的控件,不是因为它用得多,而是很多UI控件都是继承它的,了解它的分类方法是很有必要的. UIView其实是由多个分类构成,主要有如下几个分类: UIView :基本属性 ...
- initWithFrame,initWithCoder,awakeFromNib的区别
这三个都是系统初始化视图时会调用的方法. initWithFrame主要用在非xib创建的视图 initWithCoder和awakeFromNib主要用在xib创建的视图 两个调用的先后顺序是 ...
- UIView的hitTest和pointInside方法
官方描述 - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event; Returns a Boolean value indicati ...
- [ios2] UIView的hitTest,pointInside方法详解【转】
关于UIView的触摸响应事件中,这里有一个常常容易迷惑的方法hitTest:WithEvent.先来看官方的解释:This method traverses the view hierarchy b ...
- iOS开发基础知识--碎片27
iOS开发基础知识--碎片27 1:iOS中的round/ceil/floorf extern float ceilf(float); extern double ceil(double); ext ...
- initWithFrame 与 initWithCoder 、awakeFromNib 的方法理解笔记
1. initWithFrame方法是什么? initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸). 当然,其他UI对象,也有initWithFrame方法, ...
- IOS中initWithFrame 和 initWithCoder的区别
2019独角兽企业重金招聘Python工程师标准>>> 从nib中加载对象实例时,init:或initWithFrame:都不会调用.而是调用initWithCoder:怎么理解: ...
最新文章
- 人工智能/云原生/数据科学/计算等方向内容整理志愿者招募了!
- 《JavaScript面向对象精要》——第1章 原始类型和引用类型1.1 什么是类型
- linux 每日学一点《Linux架设代理服务器(2)》
- bzoj 3223: Tyvj 1729 文艺平衡树
- python程序多次运行_[Python]在一段Python程序中使用多次事件循环
- poj 1703(种类并查集)
- 计算机组成原理【随堂练习】
- mysql 原来用的引擎_MySQL 的常用引擎
- Excel VBA 删除 表格中的图片
- 人人都有个Handler原理讲解
- mysql人物画像_用户画像智能匹配,用户画像的算法有哪些?
- 去掉Win7快捷方式小箭头
- linux 内存容量换算,Hi3516A开发--内存换算
- 获取win10锁屏壁纸
- Google全系列产品不再信任赛门铁克某款根证书-转载
- undefined reference to 'function'及解决办法
- Hadoop 文件系统与 COS 之间的数据迁移
- Linux基础 第三节 第一课
- java try with_Java使用try-with
- html来自网页的消息,win7系统ie浏览器提示:来自网页的消息的解决方法