1

UIViewに、あるポイントから別のポイントへのUIButtonの移動をアニメーション化するカテゴリがあります。実行中ですが、ボタンがまったく動かない。アニメーションは成功しているように見えますが、動きはまったくありません。

ボタンは繰り返しNSTimerによって呼び出され、ボタンがアニメーション化されるポイントまでカウントダウンします(残りのポイントがアニメーション化されている場合、残りのポイントが正しいかどうかを1秒ごとに確認します)。マイクのレベルを操作するために0.01秒ごとに呼び出されるタイマーもありますが、周波数を上げても機能しません。

私のアニメーションコードは大丈夫だと思いますが、何かがアニメーションの表示を妨げています。アニメーション化する前にviewDidLoadを表示すると、アニメーション化されます(ただし、エンドポイントから開始し、ストーリーボードのボタンを配置した場所までアニメーション化されます)が、プログラムのフローでアニメーション化すると機能しません。

カテゴリは私のエンドポイントを正しく上回り、5秒後に「完了」しました。

カテゴリ:

@implementation UIView (Animation)
- (void) moveTo:(CGPoint)destination duration:(float)secs option:(UIViewAnimationOptions)option
{
    NSLog(@"moveTo Category. destination: %@ and duration %f", NSStringFromCGPoint(destination), secs);
    [UIView animateWithDuration:secs delay:0.0 options:option
                     animations:^{
                         self.frame = CGRectMake(destination.x,destination.y, self.frame.size.width, self.frame.size.height);
                         NSLog(@"self.frame: %@", NSStringFromCGRect(self.frame));
                     }
                     completion:^(BOOL finished){
                         NSLog(@"done");
                     }];
}
@end

アニメーション化するコード:

[rewardAnimationButton moveTo:CGPointMake(100, 100) duration:5.0 option:0];
4

1 に答える 1

3

XIB ファイル/ストーリーボードの自動レイアウトをオフにしましたか? おそらく、自動レイアウトがビューの配置を引き継いで、アニメーションに干渉します。

フレームではなく、ボタンの中心をアニメーション化することもできます。ビューの変換が同一でない場合、frame プロパティは未定義です。

于 2013-02-22T01:34:23.277 に答える