iOS UITableView仅动画第一个可见单元格

时间:2014-05-20 14:58:30

标签: ios animation uitableview

我希望在用户滚动时使用一些动画实现UITableView。只有第一个可见(最顶层)单元格必须是不同的布局。在第二个单元格到达UITableView的顶部之前,我想要启动小动画。 (更改背景alpha和单元格宽度viewView等)

我怎么能处理这个?

[UPDATE]

到目前为止我尝试过:

  • 使用UIScrollView委托方法scrollViewDidScroll:(UIScrollView *)scrollView 与UITableView的visibleCells属性一起使用它的第一项来获取 参考没有运气

1 个答案:

答案 0 :(得分:1)

这就是我所做的:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

     if (!decelerate) {
          [self scrollingFinish];
     }
}

...

 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
     [self scrollingFinish];
}

..

- (void)scrollingFinish {

    NSIndexPath *firstVisibleIndexPath = [[self.tableView indexPathsForVisibleRows] objectAtIndex:0];

    NSLog(@"first visible cell's section: %i, row: %i", (int) firstVisibleIndexPath.section, (int) firstVisibleIndexPath.row);


    APFCategoryCell * cell = (APFCategoryCell*) [self.tableView cellForRowAtIndexPath:firstVisibleIndexPath];

    [cell animateCell];

    [self.tableView scrollToRowAtIndexPath:firstVisibleIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

}

如果用户向下滚动,则会出现问题,因为动画单元格仍然可见并且下一个动画单元格已设置动画。因此,两个或更多个单元格是动画的。我可以继续在我的自定义单元格中实现一个方法,例如- (void) resetAnimatedCell,但也许有一种更优雅的方法可以做到这一点?