2

アニメーション付きのコレクションをリロードしたい。ドキュメントを調べたところ、以下の方法が提供されています。使いました。正常に動作しています。今、私はアニメーションの速度(遅い/速い)を扱いたいと思っています。この方法で可能ですか?

  - (void)performBatchUpdates:(void (^)(void))updates completion:(void (^)(BOOL finished))completion;

私のコード:

[mycollectionView performBatchUpdates:^{
    [mycollectionView reloadData];
   };
4

3 に答える 3

2

移動効果とアニメーションをセルに追加するには:

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

    CGFloat xx=cell.frame.origin.x;
         CGFloat yy=cell.frame.origin.y;



        CGRect frame = cell.frame;
        frame.origin.x = 500; // new x coordinate
        frame.origin.y = 0; // new y coordinate
        cell.frame = frame;


        [UIView animateWithDuration:2.0 animations:^{

            CGRect frame = cell.frame;
            frame.origin.x = xx; // new x coordinate
            frame.origin.y = yy; // new y coordinate
            cell.frame = frame;
            // cell.entityImageEffect.alpha = 1;
        }];

    return cell;

    }
于 2013-07-30T10:40:39.710 に答える
1

よくわかりませんが、単に を呼び出すだけでは本当に可能だとはperformBatchUpdates:思いません。それをオーバーライドしても意味がないと思います。

しかし、これを行うための簡単なトリックは、セルを透明にしてから UIView を呼び出すことanimateWithDuration:animations:ですcollectionView:cellForItemAtIndexPath:

例えば:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"SMSourceEntityCell";
    SMSourceEntityCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];

    cell.backgroundImageView.alpha = 0.1;
    cell.entityImageView.alpha = 0.1;
    cell.entityImageEffect.alpha = 0.1;

    [UIView animateWithDuration:2.0 animations:^{
        cell.backgroundImageView.alpha = 1;
        cell.entityImageView.alpha = 1;
        cell.entityImageEffect.alpha = 1;
    }];

    return cell;
}
于 2013-07-23T13:43:09.240 に答える