如何自定义UITableView的Header

如何自定义UITableView的Header,第1张

如何自定义UITableView的Header

转载

分类: iphone开发笔记

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{

UIView *v_headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 23)]//创建一个视图(v_headerView)

UIImageView *v_headerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 23)]//创建一个UIimageView(v_headerImageView)

v_headerImageView.image = [UIImage imageNamed:@"ip_top bar.png"]//给v_headerImageView设置图片

[v_headerView addSubview:v_headerImageView]//将v_headerImageView添加到创建的视图(v_headerView)中

[v_headerImageView release]//释放v_headerImageView所占用的资源

UILabel *v_headerLab = [[UILabel alloc] initWithFrame:CGRectMake(10, 1, 100, 19)]//创建一个UILable(v_headerLab)用来显示标题

v_headerLab.backgroundColor = [UIColor clearColor]//设置v_headerLab的背景颜色

v_headerLab.textColor = [UIColor grayColor]//设置v_headerLab的字体颜色

v_headerLab.font = [UIFont fontWithName:@"Arial" size:13]//设置v_headerLab的字体样式和大小

v_headerLab.shadowColor = [UIColor whiteColor]//设置v_headerLab的字体的投影

[v_headerLab setShadowOffset:CGSizeMake(0, 1)]//设置v_headerLab的字体投影的位置

//设置每组的的标题

if (section == 0) {

v_headerLab.text = @"拍品导航"

}

if (section == 1) {

v_headerLab.text = @"专场特卖"

}

[v_headerView addSubview:v_headerLab]//将标题v_headerLab添加到创建的视图(v_headerView)中

[v_headerLab release]//释放v_headerLab所占用的资源

return v_headerView//将视图(v_headerView)返回

}

 我碰到了这个问题,我也希望改变的动画,所以我做的UIView的子类,为我的头意见,并补充

- (void)adjustTableHeaderHeight:(NSUInteger)newHeight{

NSUInteger oldHeight = self.frame.size.height

NSInteger originChange = oldHeight - newHeight

[UIView beginAnimations:nil context:nil]

[UIView setAnimationDuration:1.0f]

[UIView setAnimationDelegate:self]

[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]

self.frame = CGRectMake(self.frame.origin.x,

self.frame.origin.y,

self.frame.size.width,

newHeight)

for (UIView *view in [(UITableView *)self.superview subviews]) {

if ([view isKindOfClass:[self class]]) {

continue

}

view.frame = CGRectMake(view.frame.origin.x,

view.frame.origin.y - originChange,

view.frame.size.width,

view.frame.size.height)

}

[UIView commitAnimations]

}

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context{

[(UITableView *)self.superview setTableHeaderView:self]

}

这实质上是对动画的UITableView的所有不属于类类型调用类的子视图。在动画的最后,它调用setTableHeaderView在父视图(在UITableView中)-如果没有这个的UITableView的内容将跳回到下一个滚动。我对这个迄今为止发现的唯一的限制是,如果试图滚动的UITableView,而动画正在发生,滚动将动画,犹如头视图尚未调整(不是一个大问题,如果动画快) 。

将UIView设置为 整个tableView的headerView,而不是 section 0的headerView

self.tableView.tableHeaderView=header

这样,就可以完美的满足 headerView跟随cell的内容一起滚动的要求拉。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11359131.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存