看圖
1.最上面動(dòng)圖是TableView的 tableHeaderView版确,在initWithFrame設(shè)置如下:
_headImageScView = [[KKImageScroller alloc] init];
_headImageScView.delegate = self;
_headImageScView.frame = CGRectMake(0, 0, HMScreenW, 210);
#pragma mark - 先設(shè)置大小 再設(shè)置為 tableHeaderView
//[_tableView setTableHeaderView:_headImageScView];
_tableView.tableHeaderView = _headImageScView;
一定先設(shè)置大小 再設(shè)置為 tableHeaderView,這樣不會(huì)遮擋第一個(gè)cell.
假如是動(dòng)態(tài)頭部鸥昏,每次改變frame后要重新設(shè)置一遍 :
_tableView.tableHeaderView = _headImageScView;
這樣保證tableHeaderView每次frame都是正確的!
2.熱門(mén)那個(gè)view是所有section的頭部,這個(gè)如果只設(shè)置文字脂矫,在以下方法中設(shè)置
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return @"熱門(mén)推薦";
}
如果需要設(shè)置帶按鈕或者圖片的效果,就要自定義一個(gè)view繼承UITableViewHeaderFooterView霉晕,然后在下面方法中返回:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
HomeFirstHeaderV *headerView = [HomeFirstHeaderV shareHomeFirstHeaderV:tableView];
headerView.frame = CGRectMake(0, 5, HMScreenW, 20);
return headerView;
}
此頭部視圖若想循環(huán)使用庭再,在自定義的時(shí)候添加以下代碼
HomeFirstHeaderV *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:ID];
if (headerView == nil) {
headerView = [[self alloc] initWithReuseIdentifier:ID];
}
在以下方法中設(shè)置sectionHeader大小捞奕,其中return 0.1的時(shí)候最小。
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0.1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:( NSInteger)section{
return 30;
}
最后實(shí)現(xiàn)sectionHeader懸停效果拄轻,設(shè)置UITableViewStyle為UITableViewStylePlain颅围,不要懸停就設(shè)置為UITableViewStyleGrouped。
typedef NS_ENUM(NSInteger, UITableViewStyle) {
UITableViewStylePlain, // regular table view
UITableViewStyleGrouped // preferences style table view
};
一個(gè)菜鳥(niǎo)的自白恨搓。