新手入門,在保持興趣的前提下,最直接的辦法就是照着例子手動敲一遍代碼,然后將示例跑起來,這樣能最直觀的看到效果。
但是,一般的面向初學者的教程或實例,技術面都相對於淺顯,實現的效果也比較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; }
這下好了,我要的效果出來了~

