Grimfrog と Charlie Elliott の応答を組み合わせて使用することで、私が求めている動作を得ることができました。
Charlie Elliott のソリューションは、コレクション ビュー内のアイテムに対して正しい最終結果を得ましたが、アニメーション中に zIndex にまだスナップ効果がありました。
grimfrog のソリューションは正しい外観を提供しましたが、正しいように見えても、レイアウトの変更後も zIndex が正しくないという問題がありました。
この 2 つの組み合わせは、優れたソリューションではありませんが、機能し、UICollectionViewLayoutAttributes のサポートされている変換および zIndex プロパティを使用します。
私のレイアウトでは、
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
NSArray *attributes = [super layoutAttributesForElementsInRect:rect];
[attributes enumerateObjectsUsingBlock:^(UICollectionViewLayoutAttributes *attributes, NSUInteger idx, BOOL *stop) {
attributes.zIndex = attributes.indexPath.item + 1;
}];
return attributes;
}
- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewLayoutAttributes *attributes = [super layoutAttributesForItemAtIndexPath:indexPath];
attributes.transform3D = CATransform3DMakeTranslation(0, 0, attributes.indexPath.item);
return attributes;
}
これを解決する別の方法があるに違いないと確信しているので、まだこれを正しい答えにはしませんが、これが他の人の問題も解決するかどうかに興味があります。