博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UI基础之frame模型的使用
阅读量:5219 次
发布时间:2019-06-14

本文共 2718 字,大约阅读时间需要 9 分钟。

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

- (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

 

转载于:https://www.cnblogs.com/yiyuanchenfeng/p/6810305.html

你可能感兴趣的文章
路冉的JavaScript学习笔记-2015年1月23日
查看>>
Mysql出现(10061)错误提示的暴力解决办法
查看>>
2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
查看>>
NPM慢怎么办 - nrm切换资源镜像
查看>>
CoreData 从入门到精通(四)并发操作
查看>>
Swift - UIView的常用属性和常用方法总结
查看>>
Swift - 异步加载各网站的favicon图标,并在单元格中显示
查看>>
Java编程思想总结笔记Chapter 5
查看>>
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
查看>>
WinForm聊天室
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
Linux升级内核教程(CentOS7)
查看>>
Lintcode: Partition Array
查看>>
分享适合个人站长的5类型网站
查看>>
类别的三个作用
查看>>
【SICP练习】85 练习2.57
查看>>
runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁
查看>>