Автоматическое перемещение UICollectionCells в горизонтальном направлении

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

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

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

-(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;



    }

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


person Community    schedule 12.08.2013    source источник
comment
Вы имеете в виду, что большинство левых ячеек исчезают, а справа появляются новые?   -  person paul    schedule 12.08.2013
comment
сколько ячеек видно в вашем uicollectionview?   -  person iPatel    schedule 12.08.2013
comment
@Paul: Точно!!! Если вам нужно, я могу отправить демо для того же, чтобы вы почувствовали необходимость.   -  person    schedule 12.08.2013
comment
@iPatel: они исходят от webService. Динамический   -  person    schedule 12.08.2013
comment
а по умолчанию если не скроллить то максимум сколько??   -  person iPatel    schedule 12.08.2013
comment
@iPatel: сначала будет отображаться одна ячейка. Затем, через одну секунду, появится другая ячейка, так как мы прокручиваем ее по горизонтали. Идея состоит в том, чтобы ячейки автоматически перемещались в горизонтальном направлении.   -  person    schedule 12.08.2013
comment
@iPatel: Если вам нужно, я могу отправить вам демо-копию того же самого.   -  person    schedule 12.08.2013


Ответы (2)


Если ваш код перемещения работает, используйте его в функции таймера с интервалом в 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;

}

OR

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

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

person Warewolf    schedule 12.08.2013

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

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

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

person paul    schedule 12.08.2013
comment
Вероятно, это приведет к перезагрузке данных. Нужно ли включать в него таймер. Я никогда не сталкивался с анимацией d или таймером. Пожалуйста, уточните - person ; 12.08.2013
comment
Эй, я использовал приведенный выше код в своем демонстрационном приложении, но дело в том, что приложение вообще не запускается. - person ; 12.08.2013
comment
Вам нужно периодически вызывать этот код с помощью NSTimer. Он должен вызывать collectionView:cellForItemAtIndexPath: автоматически - person paul; 12.08.2013