水平方向自动移动 UICollectionCells

Posted

技术标签:

【中文标题】水平方向自动移动 UICollectionCells【英文标题】:Automatically moving UICollectionCells in horizontal direction 【发布时间】:2013-08-12 11:48:59 【问题描述】:

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



    

谢谢, *最好的问候。*

【问题讨论】:

你的意思是最左边的单元格消失了,而新的单元格出现在右边? 你的 uicollectionview 中有多少个单元格可见? @paul:完全正确!!!如果您需要,我可以发送相同的演示,让您感到需要。 @iPatel :这些来自 webService。动态 但默认情况下如果你不滚动那么最大多少?? 【参考方案1】:

如果您的移动代码有效,则在计时器功能中使用它,间隔为 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://***.com/a/13129472/1305001

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

这可能会重新加载数据。我需要在其中包含一个计时器吗?我从来没有遇到过动画或计时器。请详细说明 嘿,我确实在我的演示应用程序中使用了上面的代码,但问题是应用程序根本没有启动。 您需要使用 NSTimer 定期调用此代码。它应该自动调用 collectionView:cellForItemAtIndexPath:

以上是关于水平方向自动移动 UICollectionCells的主要内容,如果未能解决你的问题,请参考以下文章

识别触摸移动方向

第98天:变换transform详解

背景图设置

UICollectionCell 位置问题

如何实现横版游戏中角色的移动控制

移动端适配