一連のレイヤーが配置され、単一の「アクティブ化された」レイヤー(基本的にユーザーがクリックしたレイヤー)が同時に配置およびサイズ変更される方法があります。アクティブ化されたレイヤーを含むすべてのレイヤーは、より大きなレイヤーのサブレイヤーです。これが私の方法です:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.7]
forKey:kCATransactionAnimationDuration];
}];
for (CALayer *layer in self.inactiveLayers) {
... do some positioning ...
}
CGRect newFrame = activeLayer.frame;
newFrame.origin.x = 50.0;
newFrame.origin.y = 50.0;
newFrame.size.width = 100.0;
newFrame.size.height = 100.0;
activeLayer.frame = newFrame;
[CATransaction commit];
私が経験している問題は本当に奇妙です。上記のコードを使用すると、アニメーションは実行されません (非アクティブなレイヤーのアニメーションも実行されません)。しかし、新しいフレームのサイズと幅を設定する行をコメントアウトするとすぐに、魔法のようにアニメーションが再び機能し始めます。
これが起こるべき理由はありますか?