转载
分类: 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的内容一起滚动的要求拉。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)