新手入门,在保持兴趣的前提下,最直接的办法就是照着例子手动敲一遍代码,而后将示例跑起来,这样能最直观的看到效果。html
可是,通常的面向初学者的教程或实例,技术面都相对于浅显,实现的效果也比较Low,就像开发商刚盖出的房子同样,也叫房子,但那是毛坯房。相对于有其余语言开发经验或项目经验的初学者(Ps:例如我~)来讲,每每会以点带面,会主动去挖掘与教程相关的“姿式点”,想尽办法用已掌握的新技能去将这些实例完善、扩展,想一次就作出精装修的房子。又由于对于一门刚接触的新语言,了解的不够深刻,因此也会不免陷入一个个小坑中。ios
这两天作的实例是编码实现UITableView,仍是老样子,不拖控件、不使用Auto Layout布局,要求兼容苹果不一样分辨率的三种设备,暂不考虑iPad。app
功能很简单,很容易就搞出来了。可是表头很丑,看着很不爽,寻思着是否是给它弄好看一点。布局
// 普通设置表头 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ return @"婴幼儿奶粉品牌列表(默认表头)"; }
以下图:google
我想要作的是将表头弄漂亮一点,增长一点自定义的元素,好比说加个小icon,加个背景色什么的。编码
// 自定义表头 - (UIView*) tableView:(UITableView *)_tableView viewForHeaderInSection:(NSInteger)section { UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, _tableView.frame.size.width, 50)]; // left icon UIImageView *icon = [[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 40, 40)]; icon.image = [UIImage imageNamed:@"250x250"];// right text UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(45, 0, _tableView.frame.size.width-50, 50)]; label.textColor = [UIColor orangeColor]; label.text = @"婴幼儿奶粉品牌列表(自定义表头)"; label.textAlignment = NSTextAlignmentCenter;// 消息方式设置背景色(UIColor最后要转成CGColor类型) [headerView.layer setBackgroundColor:[UIColor colorWithRed:230.0/255.0 green:230.0/255.0 blue:250.0/255.0 alpha:1].CGColor]; // 属性方式设置背景色 //headerView.backgroundColor = [UIColor colorWithRed:230.0/255.0 green:230.0/255.0 blue:250.0/255.0 alpha:1]; [headerView addSubview:icon]; [headerView addSubview:label]; return headerView; }
原觉得到这里,差很少就实现我想的效果:表头左边有个小icon,右边是文字描述。可恰恰就是没出来我想要的效果,不知道是什么问题。在自定义表头的方法里面打日志,发现程序根本就没进去。。。spa
新手嘛,各类google, 找了好多资料后最后在stackoverflow.com上找到一个相似的问题,去看了官方文档才明白是怎么回事。3d
知道什么问题就好办了,老老实实去实现tableView:heightForHeaderInSection呗日志
// 设置表头的高度。若是使用自定义表头,该方法必需要实现,不然自定义表头没法执行,也不会报错 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 50; }
这下好了,我要的效果出来了~code