0

UICollectionViewFlowLayout向きの変更により位置が変わると、セルがスライドするようにオーバーライドしようとしています。私が現在持っているのは、縦向きで 1 行あたり 3 つのセル、横向きで 1 行あたり 4 つのセルですが、方向を変更したときに得られる唯一のアニメーションは、デフォルトのフェードインです。

私は使用を検討してきましたがperformBatchUpdates、答えが見つかる場所ではないと確信しています。

私はまた、私が答えを見つける場所だと思うとをlayoutAttributesForElementInRect調べてきました。layoutAttributesForItemAtIndexPathセルの新しい属性を作成する必要があるかどうか (previousCenterおそらく)、それを新しいアニメーションの開始点として使用performBatchUpdatesするか、新しいフレームを変更する値として使用する必要があるかどうかはわかりません。

記録のために、私が見つけたすべてのアニメーションの質問は、私がやりたいことではないアイテムの挿入と削除のためにアニメーションを変更する方法に関するものでした.

4

1 に答える 1

0

試す

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(    NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.collectionView reloadData];
}

その時点で「スライド」するために必要なものを追加します。

flowLayout またはそのサブクラスを使用している場合は、セルが自動的に再配置されます。レイアウトをサブクラス化する場合は、回転に対応するように返されるレイアウト属性を調整する必要がある場合があります。ただし、アニメーションはあなたのために行う必要があります。

于 2013-04-04T15:30:09.373 に答える