initWithCoder: 与initWithFrame:的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了initWithCoder: 与initWithFrame:的区别相关的知识,希望对你有一定的参考价值。
- (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;
}
以上是关于initWithCoder: 与initWithFrame:的区别的主要内容,如果未能解决你的问题,请参考以下文章
initWithFrame 与 initWithCoder awakeFromNib 的方法理解笔记
为啥 UITableViewCell 初始化在 initWithCoder 中不起作用
你在哪里设置子视图的图层属性?为啥不在 initWithCoder 中