看图
1.最上面动图是TableView的 tableHeaderView,在initWithFrame设置如下:
_headImageScView = [[KKImageScroller alloc] init];
_headImageScView.delegate = self;
_headImageScView.frame = CGRectMake(0, 0, HMScreenW, 210);
#pragma mark - 先设置大小 再设置为 tableHeaderView
//[_tableView setTableHeaderView:_headImageScView];
_tableView.tableHeaderView = _headImageScView;
一定先设置大小 再设置为 tableHeaderView,这样不会遮挡第一个cell.
假如是动态头部,每次改变frame后要重新设置一遍 :
_tableView.tableHeaderView = _headImageScView;
这样保证tableHeaderView每次frame都是正确的!
2.热门那个view是所有section的头部,这个如果只设置文字,在以下方法中设置
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return @"热门推荐";
}
如果需要设置带按钮或者图片的效果,就要自定义一个view继承UITableViewHeaderFooterView,然后在下面方法中返回:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
HomeFirstHeaderV *headerView = [HomeFirstHeaderV shareHomeFirstHeaderV:tableView];
headerView.frame = CGRectMake(0, 5, HMScreenW, 20);
return headerView;
}
此头部视图若想循环使用,在自定义的时候添加以下代码
HomeFirstHeaderV *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:ID];
if (headerView == nil) {
headerView = [[self alloc] initWithReuseIdentifier:ID];
}
在以下方法中设置sectionHeader大小,其中return 0.1的时候最小。
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0.1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:( NSInteger)section{
return 30;
}
最后实现sectionHeader悬停效果,设置UITableViewStyle为UITableViewStylePlain,不要悬停就设置为UITableViewStyleGrouped。
typedef NS_ENUM(NSInteger, UITableViewStyle) {
UITableViewStylePlain, // regular table view
UITableViewStyleGrouped // preferences style table view
};
一个菜鸟的自白。