次の方法を使用して、プログラムでUIViewを移動しようとしています。
-(void)animatePlaybackLine: (int) currentBeat{
CGRect newFrame = CGRectMake(currentBeat*eighthNoteWidth, 0, eighthNoteWidth, 320);
[playbackLine setFrame:newFrame];
NSLog(@"Line animated to %i", currentBeat);
NSLog(@"New frame origin %f", playbackLine.frame.origin.x);
}
メソッドが呼び出されると、NSLogsは変数currentBeatが必要に応じて増加し、playbackLine(私のUIView)のフレームが必要に応じて移動しているように見えます。ただし、画面上のオブジェクトは移動しません。フレームの代わりに境界と中心を設定しようとしましたが、すべて同じような結果になりました。フレームを設定する代わりにアニメーションを使用してみました。 。
画面上の画像に変化するフレームを表示させるために私がやるべきことは他にありますか?
回答:
回答№1は1ループでそのメソッドを呼び出していますiOSは、コードの実行が完了するまで画面を再描画しません。このようにループして、反復結果を確認することはできません。
ビューをアニメーション化するには、UIKitが提供するネイティブサポートを使用する必要があります。特に、チェックアウト UIViewクラスリファレンスのAnimationsセクション.
回答№2の場合は1
これを試して
[UIView animateWithDuration:0.3
delay:0.0
options: UIViewAnimationCurveEaseOut
animations:^{
datePickerView.frame = imageFrame;
}
completion:^(BOOL finished){
self.datePickerViewFlag = NO;
}];