自动沿水平方向移动UICollection单元格

时间:2013-08-12 11:48:59

标签: ios animation uicollectionview uicollectionviewcell

我正在尝试使用UIView制作动画但是徒劳无功的所有东西。 我需要CollectionView Cells应该在每个固定的秒后自动水平滑动。

请帮我解决这个问题,因为这是我的应用等待发布的唯一原因。

我试过这个但是徒劳无功。

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



    }

谢谢, * 最诚挚的问候。 *

2 个答案:

答案 0 :(得分: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;

}

OR

这可以帮助你更好

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

答案 1 :(得分:0)

您应该在performBatchUpdates:completion:块中包装插入/删除/重新加载操作。 例如:

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

然后您应该使用计时器定期调用此代码。这假设您还更新了数据源