gpt4 book ai didi

uitableview - 滚动 uitableview 时更改特定的 uitableviewcell 行高

转载 作者:行者123 更新时间:2023-12-03 21:53:31 27 4
gpt4 key购买 nike

我有一个 UITableview 有 2 个部分,第一部分中有 1 行,第二部分有可变数量的行。当用户向上滚动表格(手指向上移动)时,tableview 会执行默认操作,但是当用户位于 uitableview 的顶部并向下滚动(手指向下移动)时,它应该看起来像第一部分的高度随着用户向下滚动而增加(释放触摸会将行的高度更改回其原始高度 100)。我试过

-(void)scrollViewDidScroll:(UIScrollView*)scrollView{
if(scrollView.contentOffset.y < 0){
[mainTable reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection: 0]] withRowAnimation:UITableViewRowAnimationNone];
}
}

-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{
if(indexPath.section == 0 && tableView.contentOffset.y < 0){
return -tableView.contentOffset.y+100;//Default height is 100
}
}

但是 reloadRows 方法将 contentOffset 重置为 0,因此当我下拉时,tableview 会卡顿。如果这不起作用,那么我将不得不在 UIScrollView 上编写所有内容,如果没有可回收的单元格,这似乎是一个巨大的痛苦。

有人有什么建议吗?

最佳答案

无需重新加载行,我只是直接更改了框架。确保设置 cell.layer.masksToBounds = YES 并使单元格中的 subview 大于原始单元格高度。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
if (mainTable.contentOffset.y < 0) {
UITableViewCell *cell = [mainTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
float rawr = mainTable.contentOffset.y;
cell.frame = CGRectMake(cell.frame.origin.x, rawr, cell.frame.size.width, 100-rawr);
}
}

关于uitableview - 滚动 uitableview 时更改特定的 uitableviewcell 行高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9125826/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com