同時にいくつかのアニメーションを実行しようとしています。1 つは 1 つの uimageview から別の uimageview への遷移で、もう 1 つはラベルの translation.x のアニメーションです。ラベルは uiimageview の上にあります。
しかし、私が得るのは、翻訳が正常に機能してすぐに移行が行われるか、非表示のプロパティに基づく移行が、シフトされるだけのラベルにも適用されることです(非表示から表示にもなります)。caanimationgroup は異なるビューに適用されるため、使用できません。
//ラベルをスライドさせるCAKeyFrameAnimation
...
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform.translation.x"];
NSArray *xValues = @[[NSNumber numberWithFloat:myLabel.bounds.origin.x],
[NSNumber numberWithFloat:myLabel.bounds.origin.x + screenHalf],
[NSNumber numberWithFloat:myLabel.bounds.origin.x + screenHalf * 4]];
[anim setValues:xValues];
NSMutableArray *timeFrames = [NSMutableArray array];
CGFloat timeStep = 1.0 / ([xValues count] - 1);
for (NSInteger i = 0; i < [xValues count]; i++)
{
[timeFrames addObject:[NSNumber numberWithFloat:timeStep * i]];
}
[anim setKeyTimes:timeFrames];
[anim setDuration:duration];
[anim setFillMode:kCAFillModeForwards];
[anim setRemovedOnCompletion:FALSE];
[myLabel.layer addAnimation:anim forKey:nil];
...
// uiimageview から別のビューへの遷移
...
CATransition *transition = [CATransition animation];
[transition setDuration:duration];
[transition setType:kCATransitionFade];
//These two are uiimageviews i'm switching from and to
initial.hidden = TRUE;
next.hidden = FALSE;
//Initial and next are subviews of container which itself is a subview of viewcontroller's main view
[container.layer addAnimation:transition forKey:@""];
上記のようなアニメーションを呼び出すと、遷移がすぐに発生し、ラベルが画面全体に正しくスライドします。最後の行を次のように変更すると:
[self.view.layer addAnimation:transition forKey:@""];
次に、非表示のアニメーションも myLabel に適用されます。上記のようなアニメーションを組み合わせた場合の修正は何ですか? また、さらに詳しく説明すると、その原因は何ですか?