1

サブビューのスライドアニメーション(下、一時停止、上に戻る)中に、デバイスが回転するため、スーパービューが回転します。サブビューの幅をスーパービューと同じに保ちたいので、スライドアニメーション中にサイズを変更する必要があります。

スライドアニメーションコードは次のとおりです。

[UIView animateWithDuration:0.3 animations:^{
    self.frame = finalFrame;
} completion:^(BOOL finished) {
    [UIView animateWithDuration:0.3 delay:3 options:0 animations:^{
        self.frame = initFrame;
    } completion:^(BOOL finished) {
        [self removeFromSuperview];
    }];
}];

これは、回転を検出したときに呼び出されるメソッドです。

- (void)rotate:(NSNotification *)notif {
    // What to do here to adjust the width but also keep the sliding animation going.
}
4

2 に答える 2

1

ここで使用できる自動サイズ変更の魔法はないようです。1つはする必要があります:

  1. アニメーションの進行状況を記録します。
  2. 回転を検出したら、古いアニメーションをキャンセルし、ビューサイズを調整し、現在の進行状況から新しいアニメーションを追加します。

参考のためのサンプルプロジェクトは次のとおりです:http://d.pr/f/M4UW

于 2012-09-30T20:06:41.500 に答える
0

レイヤーのをアニメートしboundsて幅を変更できます。高さを同じにして、境界にアニメーションを適用するだけです。

両方のアニメーションの継続時間やタイミング機能などを同じにしたい場合は、両方をアニメーショングループに追加し、そのグループをアニメーション化するレイヤーに追加できます。

于 2012-09-29T18:35:17.023 に答える