如何让tableheaderview 不滑动

如何让tableheaderview 不滑动,第1张

在我们利用 UITableView 展示我们的内容的时候,我需要在顶部放一个不同于一般的cell的 界面,这个界面比较独特。

1。 所以我就把它 作为一个section的 headerView。

也就是在函数:

- (UIView *)tableView:(UITableView

*)tableView viewForHeaderInSection:(NSInteger)section

里面返回 这个UIView。

但是,由于这个UIView占的空间很大,基本占用整个屏幕的高度,而滚动tableView的时候,只滚动cell的内容,而这个section的headerView却不跟着滚动。

后面,我想出了方法2。

2。 设置 tableView的 style为 UITableViewStyleGrouped,然后让

-

(NSInteger)numberOfSectionsInTableView:(UITableView

*)tableView

返回1。

这样确实可以让 headerView,在滚动tableView的时候,跟随着cell的内容一起滚动。但是,我发现,下面的cell都被加上了边框,而且cell的水平显示范围变窄了。

所以尝试了方法3。

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

self.tableView.tableHeaderView=header

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

结论:设置 UIView为 tableView的tableHeaderView即可实现headerView跟随tableView一起滚动的效果。转载

 我碰到了这个问题,我也希望改变的动画,所以我做的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,而动画正在发生,滚动将动画,犹如头视图尚未调整(不是一个大问题,如果动画快) 。

自定义的headerView里 重写 willMoveToSuperView

这时候因为子视图什么的 已经弄好了,所以你只要调用下系统给的根据autolayout计算高度的方法,重新设置下headerview的frame就行了


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存