2013-08-12 3 views
0

Я пробую все вещи, которые мне нравятся, используя UIView для анимации, но тщетно. Мне нужно, чтобы ячейки CollectionView автоматически прокручивались по горизонтали через каждые фиксированные секунды.Автоматическое перемещение UICollectionCells в горизонтальном направлении

Пожалуйста, помогите мне в этом, так как это единственная причина, по которой мое приложение ждет его освобождения.

Я пробовал это, но напрасно.

-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 

    if (collectionView == self.myCV) { 
     myCollectionView *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MY_CELL" forIndexPath:indexPath]; 

     if (cell == nil) 
     { 

      NSArray *xibPath = [[NSBundle mainBundle] loadNibNamed:@"myCollectionView" owner:self options:nil]; 
      cell = [xibPath objectAtIndex:0]; 
     } 

//  [myCV performBatchUpdates:^{ 
//   [self.myCV reloadData]; 
//  } completion: nil]; 
     [UIView animateWithDuration:0.3f delay:0.0 options:0 animations:^{ 
      [self.myCV scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:indexPath.section inSection:0] 
             atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally 
               animated:NO]; 
     } completion:^(BOOL finished) { 
      NSLog(@"Completed"); 
     }]; 

     return cell; 



    } 

Спасибо, * С наилучшими пожеланиями. *

+0

Вы имеете в виду, что большинство оставшихся клеток исчезает, а справа появляются новые? – paul

+0

Сколько ячеек видно в вашем uicollectionview? – iPatel

+0

@paul: Именно! Если вам нужно, я могу отправить демо для этого, чтобы вы почувствовали необходимость. –

ответ

3

Если код шаг работает затем использовать его в функцию таймера с интервалом в 1 сек, как

[NSTimer scheduledTimerWithTimeInterval:1.0 
           target:self 
           selector:@selector(targetMethod) 
           userInfo:nil 
           repeats:YES]; 

-(void)targetMethod 
{ 

    [self.myCV scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:rowIndex inSection:0] 
         atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally 
           animated:YES]; 

    rowIndex=(rowIndex<noOfRows-1)?(rowIndex+1):0; 

} 

ИЛИ

Это может помочь U лучше

https://stackoverflow.com/a/13129472/1305001

0

Вы должны обернуть операции вставки/удаления/перезагрузки в блок performBatchUpdates:completion:. например:

[collectionView performBatchUpdates:^{ 
    [self.collectionView reloadData]; 
} completion: nil]; 

Затем вы должны использовать таймер для вызова этого кода периодически. Это предполагает, что вы также обновить исходные данные

+0

Возможно, это перезагрузит данные. Нужно ли включать в него таймер. Я никогда не сталкивался с d анимацией или таймером. Пожалуйста, уточните –

+0

Эй, я использовал приведенный выше код в своем демонстрационном приложении, но дело в том, что приложение не запускается вообще. –

+0

Вам необходимо периодически вызывать этот код с помощью NSTimer. Он должен вызвать collectionView: cellForItemAtIndexPath: автоматически – paul

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