1

コードは非常に基本的なものです:

UIImageView *testView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 80, 80)];
[self.view addSubview:testView];
[testView setImage:[UIImage imageNamed:@"button.png"]];
[UIView animateWithDuration:100
                 animations:^{testView.center =  CGPointMake(140,350);}
                 completion:^(BOOL finished){NSLog(@"animation finished");
                 }
 ];

どういうわけか、アニメーションは機能しません。画像は終了位置にのみ表示されます。ただし、NSLog メッセージは表示されます。

アニメーションが失敗する可能性があることを誰かが知っていますか?

どうもありがとうございました。

4

5 に答える 5

2

ここで提供されている解決策はどれも実際には機能しません。これは、コード内の間違った場所でローテーション コードを呼び出している可能性があるためです。

ここで呼び出すと動作します

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:YES];

}
于 2014-05-11T20:59:57.367 に答える
0
[self.view addSubview:testView];

サブビューを追加した後、UIはすぐには更新されません。更新には少し時間がかかります。ただし、アニメーションが更新と呼ばれる前に呼び出されるため、アニメーションが完了した後にのみUIが更新されます。[self.view setNeedsDisplay]アニメーションの前に呼び出すか、少し遅れてアニメーションを呼び出すことをお勧めします

于 2012-04-27T18:00:33.177 に答える
0

貼り付けたコードがあなたの正確なコードかどうかわかりません!! アニメーションの長さは 100 秒です。それは意図的な動作ですか??

また、中央ではなく直接フレームを変更してみてください。

UIImageView *testView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 80, 80)];
[self.view addSubview:testView];
[testView setImage:[UIImage imageNamed:@"button.png"]];
[UIView animateWithDuration:0.5
                 animations:^{testView.frame =  CGRectMake(140,350,80,80);}
                 completion:^(BOOL finished){NSLog(@"animation finished");
                 }
 ];
于 2012-07-25T12:02:46.250 に答える