0

アニメーションでUIImageViewの横幅を大きくしたい。ストーリーボードで作成されたUIViewとUIImageViewがあります。私が達成したいのは、ビューが左から右にスケーリングされ、元の位置を維持しているように見えるようにすることです。次のコードを試してみましたが、親ビューの左上隅からイメージビューをアニメーション化し、最初から持っていた位置とスケールに達するまで移動およびスケーリングします。

[UIView animateWithDuration:4.0f delay:1.0f options:UIViewAnimationCurveEaseOut animations:^{
    CGRect currentFrame = self.imageview1.frame;
    currentFrame.size.width = 150;
    self.imageview1.frame = currentFrame;
}completion:nil];

この動作の理由はありますか?

4

1 に答える 1

0

少し遅い答えですが、問題を解決しました。自動レイアウトが有効になっている場合、コードでビューのフレームを変更できないようです。代わりに、ビューの制約をアニメーション化する必要があります。これは、ストーリーボードで設定してから、次のようにアニメーション化できます。

[self.view layoutIfNeeded];
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{

    self.bottomViewY.constant = -196;

    [self.view layoutIfNeeded];

} completion:nil];

self.bottomViewY は、IBOUlet として割り当てられる制約です。制約を更新するため、layoutIfNeeded を呼び出す必要があります。

于 2014-05-09T12:14:09.210 に答える