0

次の関数は、A. ビューを大きくし、B. 5 秒間待機し、C. 再度縮小します。問題は、A が 2 秒ではなく瞬時に発生することです。

- (void) showAndHide {
CGRect r = self.frame;
float right = r.origin.x + r.size.width, h = r.size.height, y = r.origin.y;

[UIView animateWithDuration:2
                      delay:0
                    options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionAllowUserInteraction
                 animations:^{
                     self.frame = CGRectMake(right - 400, y, 400, h);
                     [UIView animateWithDuration:2
                                           delay:5
                                         options: UIViewAnimationOptionOverrideInheritedCurve |
                      UIViewAnimationOptionCurveLinear |
                      UIViewAnimationOptionOverrideInheritedDuration
                                      animations:^{
                                          self.frame = CGRectMake(right - 40, y, 40, h);
                                      }
                                      completion:nil];

                 }
                 completion:nil];

}

何が原因でしょうか? 前もって感謝します!

4

1 に答える 1

0

最初のアニメーションの完了ハンドラーに 2 番目のアニメーションを配置します。

- (void) showAndHide {
CGRect r = self.frame;
float right = r.origin.x + r.size.width, h = r.size.height, y = r.origin.y;

[UIView animateWithDuration:2
                      delay:0
                    options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionAllowUserInteraction
                 animations:^{
                     self.frame = CGRectMake(right - 400, y, 400, h);
                 }
                 completion:^{
                 [UIView animateWithDuration:2
                                       delay:5
                                     options: UIViewAnimationOptionOverrideInheritedCurve | UIViewAnimationOptionCurveLinear | UIViewAnimationOptionOverrideInheritedDuration
                                      animations:^{
                                          self.frame = CGRectMake(right - 40, y, 40, h);
                                      }
                                      completion:NULL];
                 }];
}

あなたのアプローチの問題は、2 つのアニメーションが同時にキューに入れられることです。コードに固執したい場合UIViewAnimationOptionBeginFromCurrentStateは、2番目のアニメーションのオプションに追加すると問題も解決する可能性があると思います. しかし、それについてはよくわかりません。

于 2012-10-29T16:19:27.433 に答える