UITableView中关于viewForHeaderInSection的一点小坑

新手入门,在保持兴趣的前提下,最直接的办法就是照着例子手动敲一遍代码,然后将示例跑起来,这样能最直观的看到效果。

但是,一般的面向初学者的教程或实例,技术面都相对于浅显,实现的效果也比较Low,就像开发商刚盖出的房子一样,也叫房子,但那是毛坯房。相对于有其他语言开发经验或项目经验的初学者(Ps:例如我~)来说,往往会以点带面,会主动去挖掘与教程相关的“姿势点”,想尽办法用已掌握的新技能去将这些实例完善、扩展,想一次就做出精装修的房子。又因为对于一门刚接触的新语言,了解的不够深入,所以也会难免陷入一个个小坑中。

 

这两天做的实例是编码实现UITableView,还是老样子,不拖控件、不使用Auto Layout布局,要求兼容苹果不同分辨率的三种设备,暂不考虑iPad。

 

功能很简单,很容易就搞出来了。但是表头很丑,看着很不爽,寻思着是不是给它弄好看一点。

// 普通设置表头
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    return @"婴幼儿奶粉品牌列表(默认表头)";
}

如下图:

 

我想要做的是将表头弄漂亮一点,增加一点自定义的元素,比如说加个小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,右边是文字描述。可偏偏就是没出来我想要的效果,不知道是什么问题。在自定义表头的方法里面打日志,发现程序根本就没进去。。。

 

新手嘛,各种google, 找了好多资料后最后在stackoverflow.com上找到一个类似的问题,去看了官方文档才明白是怎么回事。

 

知道什么问题就好办了,老老实实去实现tableView:heightForHeaderInSection呗

// 设置表头的高度。如果使用自定义表头,该方法必须要实现,否则自定义表头无法执行,也不会报错
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 50;
}

这下好了,我要的效果出来了~

转载于:https://www.cnblogs.com/erniu/p/4239683.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值