0

次の方法を使用して、プログラムで 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);
}

メソッドが呼び出されると、変数 currentBeat が必要に応じて増加していることを NSLogs が示し、playbackLine (私の UIView) のフレームが必要に応じて移動しているように見えます。ただし、画面上のオブジェクトは移動しません。また、フレームの代わりに境界と中心を設定しようとしましたが、それらはすべて同様の結果になりました。また、フレームを設定する代わりにアニメーションを使用しようとしましたが、役に立ちませんでした。

画面上の画像に変化するフレームを表示するために他にすべきことはありますか?

4

2 に答える 2

1

そのメソッドをループで呼び出していると思いますか?コードの実行が完了するまで、iOS は画面を再描画しません。このようにループして反復結果を見ることはできません。

ビューをアニメーション化するには、UIKit が提供するネイティブ サポートを使用する必要があります。特に、UIView クラス リファレンスのアニメーション セクションを確認してください。

于 2012-08-01T16:56:23.000 に答える
1

これを試して

    [UIView animateWithDuration:0.3
                      delay:0.0
                    options: UIViewAnimationCurveEaseOut
                 animations:^{
                     datePickerView.frame = imageFrame;
                 } 
                 completion:^(BOOL finished){
                     self.datePickerViewFlag = NO;
                 }];
于 2012-08-01T16:56:33.297 に答える