UITableViewController:
TableViewController中的 TableViewController.view和TableViewController.tableView实际指针是指向同一个内存地址的,也可以理解成是同一个控件,只是类型一个是父类一个是子类。
UITableViewCell:
cell的运行流程:
1.获取屏幕的宽度高度
2.计算每一行的cell高度
3.通过屏幕的高度计算展示多少个cell
4.展示cell
5.在展示cell的时候再计算一次高度
cell重用:
设定好标识符后第一次往下拉会再创建一个cell,
static NSString *resuID = @"tg";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:resuID];
if (cell == nil) {
cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"标识"];
}
比如:
0 1 2 3 4 显示5个 往下滚动的时候比如滚动一小丢丢,会显示下一个cell的内容,这个时候第0个cell还在视图中是无法用来重用的,所以需要再创建一个cell
小细节:
往上拉是不会创建cell滴,因为你往上拉只有两种情况有数据or没数据(刚初始化界面没有任何滚动的情况),有数据的情况是你往下滚动后才出现的,这个时候你往下滚动的时候已经创建了一个备用cell,你再怎么滚动都不会重新创建cell。
cell reuseIdentifier 标识静态:
当使用static的时候会把变量放到静态区,这个时候这个常量会在静态区存在到当前对象释放的时候才会释放掉,不过,一个标识变量占用撑死也就几bit,不使用静态会每次跑cell的时候在栈区开辟一个几bit的内存空间用来存储标识变量,当代码块跑完的时候就会被释放掉,只会对cpu占用有略微的消耗,对内存是几乎没有影响的跑完这个代码块就释放掉了。
tableHeaderView:
frame:只有高有效
tableFooterView :
frame:X和高有效,其他无效
注意点:如果给tableHeaderView和tableFooterView赋值为同一个控件时tableFooterView中的View属性设置是无效的,只有X和高度有效,比如设置背景颜色这些都是无效的,也可以理解为只有一个空白并且带有frame的View
separator 分割线的左边距会影响cell中的文字控件位置,所有样式都会被影响