0

ビューのサイズが変更されたときにそれに応じて対応できるように、適切な AutoresizingMasks を使用してビュー内にサブビューを配置しています。

私の問題は、ビューが縮小されすぎている場合、またはそれほど縮小されていない場合に発生します。サブビューは元の位置を忘れて、奇妙な位置に配置されたり、スケールが大きすぎたり小さすぎたりするようです。

元の要件は、「ビューを縮小」してその中心に移動し、風船のように ~=zero-size から元のフレーム サイズに「ポップアップ」することです。

ビューがより複雑になったためかどうかはわかりませんが、他のプロジェクトでは問題なくビューを縮小してポップアップしました。

4

1 に答える 1

0

さて、私が言ったように、私は以前にこれを行ったので、他のプロジェクトをチェックしたところ、問題が見つかりました。ここに回答を投稿して、興味のある人のために知識を共有します。

問題は、フレームを使用してビューを縮小または拡大することは、これを行う正しい方法ではないことです。

悪い例:

[UIView animateWithDuration: 0.4 delay:0 options: UIViewAnimationCurveEaseInOut animations:^{
    self.frame = CGRectMake(frame.origin.x + frame.size.width/2, frame.origin.y + frame.size.height/2, 10, 10);

} completion: nil];

代わりに、変換を使用する必要があります。

    self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, 1);

    [UIView animateWithDuration: 0.4 delay:0 options: UIViewAnimationCurveEaseInOut animations:^{

       self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001);

   } completion: nil];

上記は、アニメーション目的のみであることを考慮して、ビューを縮小および拡大した後、本来あるべき場所に要素を配置します。

それが役に立てば幸い。

于 2012-12-07T21:03:51.580 に答える