3

次のようなトランジション スタイルのズーム アニメーションを使用して UIView を 1 つ追加しようとしています。

     ^
     |
 <---.--->
     |
     v

ビューは小さなフレーム (centerParent.x, centerParent.y,20, 20) から始まり、(centerParent.x, centerParent.y,300, 300) に変わります。

しかし、フレームを変更するときは、中心点ではなく、ビューの位置 (0.0) から変更する必要があります。誰もそれを行う方法を知っていますか?

ありがとう

4

3 に答える 3

7

現在使用している方法論(変換を使用せずにビューのサイズを変更するだけ)では、ビューの原点または中心をリセットするだけです)。最も簡単なのはセンターです:

 view.frame = CGRectMake(0, 0, 20, 20);
    CGPoint center = view.center;
    [UIView animateWithDuration: 1.0f animations:^{
        view.frame = CGRectMake(0, 0, 300, 300);
        view.center = center;
    }];

x と y からサイズ変更の差の 1/2 を引いて移動することで原点をリセットすることもできますが、これはより多くの計算です。

view.frame = CGRectMake(0, 0, 20, 20);
    CGPoint origin = view.frame.origin.
    [UIView animateWithDuration: 1.0f animations:^{
        origin.x -= (300 - 20) / 2;
        origin.y -= (300 - 20) / 2;
        view.frame = CGRectMake(origin.x, origin.y, 300, 300);
    }];
于 2012-06-29T13:01:15.380 に答える
1

独自の中心を維持しながらビューをズームアウトするには簡単ですが、変換を使用する必要があります。ここにコードがあります。zoomerView という名前のビューを追加して接続するだけです。

この例では、これをメイン ビューに追加するだけです。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    CGPoint center = zoomerView.center;
    [UIView animateWithDuration:1 animations:^{
        zoomerView.transform = CGAffineTransformScale(zoomerView.transform, 1.2, 1.2);
    }];
}

これがお役に立てば幸いです

于 2012-06-29T12:37:24.073 に答える
0

これを試して

[UIView animateWithDuration:secs delay:1.0 options:option
                     animations:^{
                         yourview.transform = CGAffineTransformScale(view.transform, 100.0, 100.0);
                     }
                     completion:nil]; 
于 2012-06-29T12:40:21.387 に答える