0

我正在尝试所有我喜欢使用 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;



    }

谢谢你, *最好的问候。*

4

2 回答 2

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;

}

或者

这可以帮助你更好

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

于 2013-08-12T13:07:48.730 回答
0

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

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

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

于 2013-08-12T12:23:15.470 回答