2014-05-20 2 views
1

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

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

[UPDATE]

То, что я пытался до сих пор:

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

Вы что-то пробовали? – Pancho

ответ

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

Смежные вопросы