1

最近、アプリで問題が発生しました。

私は通常使用します

[UIView animateWithDuration:(NSTimeInterval) animations:^{...} completion:^(BOOL finished) {...}];

私のアニメーションを作るために、今まで完璧に機能しました。これが私の問題のコードです

UIImageView *someimage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"someimage"]];
[someimage setFrame:CGRectMake(0, 0, 200, 200)];
[self.view addSubView:someimage];
[UIView animateWithDuration:0.5 animations:^{
    [someimage setFrame:CGRectMake(400, 400, 200, 200)];
} completion:^(BOOL finished) {
    NSLog(@"Just finish moving some image lets rotate it!");
    [UIView animateWithDuration:0.5 animations:^{
        someimage.transform = CGAffineTransformMakeRotation(M_PI);
    } completion:^(BOOL finished) {
        NSLog(@"What just happened?");
    }];
}];

画像を取得し、アニメーションを使用してあるコーナーから別の位置に移動しました。次に、アニメーションが終了したら回転させますが、その回転を行うと、UIImageView が再びコーナーに表示されます。

なぜこれが起こるのか、そしてそれをどのように処理するのか、誰かが私に説明できますか?

ありがとう!

4

1 に答える 1

3

UIView クラス リファレンスには次のように書かれています。

警告 変換プロパティが恒等変換でない場合、このプロパティの値は定義されていないため、無視する必要があります。

ビュー (またはレイヤー) のフレームとその変換を同時に変更すると、期待どおりに動作しません。代わりに、ビューの center プロパティを変更してください。

于 2014-06-12T14:46:21.927 に答える