码迷,mamicode.com
首页 > 其他好文 > 详细

UI基础之frame模型的使用

时间:2017-05-05 01:05:43      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:self   空白   uitable   cell   sub   为什么   use   content   nbsp   

知识点(一):关于重写构造方法的三种方式的思考:

- (instancetype)init
{
    self = [super init];
    if (self) {
         NSLog(@"%s",__func__);
    }
    return self;
}


- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        NSLog(@"%s",__func__);
    }
    return self;
}
/**
 *  代码为什么要写在initWithStyle 方法中
 *
 * 当代码是提供给别人使用的时候,一定要充分考虑别人会怎么使用
 *  要保证自己的代码,无论别人怎么去调用,都能调用到
 */
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        NSLog(@"%s",__func__);
    }
    return self;

}

1.当调用的时候,假设对象是p,那么[[p alloc]init]的时候

调用顺序和结果为:

2017-05-03 17:30:07.737 11-微博[2376:644294] -[HMWeiboCell initWithStyle:reuseIdentifier:]
2017-05-03 17:30:07.737 11-微博[2376:644294] -[HMWeiboCell initWithFrame:]
2017-05-03 17:30:07.738 11-微博[2376:644294] -[HMWeiboCell init]
2017-05-03 17:30:08.110 11-微博[2376:644294] -[HMWeiboCell initWithStyle:reuseIdentifier:]
2017-05-03 17:30:08.111 11-微博[2376:644294] -[HMWeiboCell initWithFrame:]
2017-05-03 17:30:08.113 11-微博[2376:644294] -[HMWeiboCell init]
2017-05-03 17:30:08.116 11-微博[2376:644294] -[HMWeiboCell initWithStyle:reuseIdentifier:]
2017-05-03 17:30:08.117 11-微博[2376:644294] -[HMWeiboCell initWithFrame:]
2017-05-03 17:30:08.118 11-微博[2376:644294] -[HMWeiboCell init]

结果显示为三种方法都会被调用

2.当[[p alloc]initWithFrame:CGRectZero];的时候

调用顺序和结果为:

2017-05-03 17:37:26.351 11-微博[2405:649389] -[HMWeiboCell initWithStyle:reuseIdentifier:]
2017-05-03 17:37:26.351 11-微博[2405:649389] -[HMWeiboCell initWithFrame:]
2017-05-03 17:37:26.409 11-微博[2405:649389] -[HMWeiboCell initWithStyle:reuseIdentifier:]
2017-05-03 17:37:26.409 11-微博[2405:649389] -[HMWeiboCell initWithFrame:]
2017-05-03 17:37:26.410 11-微博[2405:649389] -[HMWeiboCell initWithStyle:reuseIdentifier:]
2017-05-03 17:37:26.411 11-微博[2405:649389] -[HMWeiboCell initWithFrame:]

3.当[[p alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseId];的时候:

调用顺序和结果为:

2017-05-03 17:38:42.427 11-微博[2424:651531] -[HMWeiboCell initWithStyle:reuseIdentifier:]
2017-05-03 17:38:42.463 11-微博[2424:651531] -[HMWeiboCell initWithStyle:reuseIdentifier:]
2017-05-03 17:38:42.464 11-微博[2424:651531] -[HMWeiboCell initWithStyle:reuseIdentifier:]

知识点(二)cell中会经常碰到[self.contentView addSubview:nameLabel]和[self addSubview:nameLabel]

一般我们向cell中添加子视图,有两种方式

[cell addSubview:]  
[cell.contentView addSubview:]  

    区别在于进行cell编辑时,比如cell内容向左移或者右移时,第一种方式子视图不会移动,第二可以,所以这种情况一般使用第二种方式。

    还有在设置backgroundColor时,使用cell设置时左移或者右移颜色是不会变的,而用cell.contentCell设置时,移动后的空白会显示cell的默认颜色,这种情况视实际情况选择。

    其实这两种方式在大多数情况是一样,不用纠结。

但一般情况下会添加到contentView上,可以这样理解:cell本身是个view,在cell上有一层透明的contentView

 

UI基础之frame模型的使用

标签:self   空白   uitable   cell   sub   为什么   use   content   nbsp   

原文地址:http://www.cnblogs.com/yiyuanchenfeng/p/6810305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!