iOS UITableView, анимирующий только первую видимую ячейку

Я хочу реализовать UITableView с некоторой анимацией, пока пользователь прокручивает. Только первая видимая (самая верхняя) ячейка должна иметь другой макет. Прежде чем вторая ячейка достигнет вершины UITableView, я хочу запустить небольшую анимацию. (изменение альфа-фона и ширины ячеек, contentView и т. д.)

Как я мог справиться с этим?

[ОБНОВИТЬ]

Что я пробовал до сих пор:

  • используя метод делегата UIScrollView scrollViewDidScroll:(UIScrollView *)scrollView вместе со свойством visibleCells UITableView, используя первый его элемент, чтобы получить ссылку без везения

person Thomas G.    schedule 20.05.2014    source источник
comment
Вы пробовали что-то до сих пор?   -  person Pancho    schedule 20.05.2014


Ответы (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, но, может быть, есть гораздо более элегантный способ сделать это?

person Thomas G.    schedule 21.05.2014