0

ええ、私はこれが多くの質問の問題であったことを知っていますが、それでもそれを機能させることはできません。

私の関数は、ビュー上のすべてのサブビューを移動します。
これはどのように見えるかです:

- (void)moveTo:(NSInteger)side
{
    CABasicAnimation *animation = [CABasicAnimation animation];
    animation.duration = 0.8f;
    animation.autoreverses = NO;
    animation.removedOnCompletion = NO;
    animation.fromValue = [NSNumber numberWithFloat:0];

    switch (side)
    {
        case kMovementSideDown: animation.toValue = [NSNumber numberWithFloat:568]; break;
        case kMovementSideUp: animation.toValue = [NSNumber numberWithFloat:-568]; break;
    }


    for (UIView *view in [self.view subviews])
    {
        [[view layer] addAnimation:animation forKey:@"transform.translation.y"];
    }
}

そして、これがすべてのアイテムを4インチの画面の外に移動することを私は知っています、それは私が望むものです。しかし、それがアイテムを外側に移動した後、私がフラグ
を設定したにもかかわらず、それらは内側に「ジャンプ」します。removedOnCompletion = 0また、デリゲートメソッドをオーバーライドし、完了後に手動で位置を設定しようとしましたが、うまくいきませんでした。

私が間違っていることは何ですか?

4

2 に答える 2

2

アニメーションを開始する前に、レイヤーが元に戻らないように、レイヤーの「終了」位置を設定する必要があります。

[yourView layer].position = endPos;
于 2012-11-15T19:23:22.433 に答える
2

レイヤーのプロパティをアニメーション化しているため、 (デフォルト) 状態transformにリセットできるものを他に確認する必要があります。CATransform3DIdentityしかし、[UIView animateWithDuration:]ビューのフレームをアニメーション化する簡単な方法を使用してみませんか?

于 2012-11-15T18:46:50.417 に答える