新手入門,在保持興趣的前提下,最直接的辦法就是照着例子手動敲一遍代碼,而後將示例跑起來,這樣能最直觀的看到效果。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