0

この方法で UIButton のサイズと幅の縮小をアニメーション化しようとしています:

[UIView animateWithDuration:0.5
                              delay:0.0
                            options: UIViewAnimationCurveEaseInOut
                         animations:^{

                             [button setFrame:CGRectMake(button.frame.origin.x, button.frame.origin.y, 0, 0)];

                             [button setCenter:CGPointMake(button.frame.origin.x,  button.frame.origin.y)];
                         }
                         completion:^(BOOL finished){
                            ...

ボタンのサイズは小さくなっていますが、中心は一定ではありません。IOSアプリを削除するときのように、私が何を意味するか知っているなら、それを閉じてほしい

4

5 に答える 5

3

現在のフレームで使用CGRectInsetして、中心点を維持しながら元のフレームよりも小さい (または大きい) 新しいフレームを生成します。

[button setFrame:CGRectInset(button.frame, button.frame.size.width * 0.5, button.frame.size.height * 0.5)];
于 2013-09-04T19:25:38.653 に答える
1

元のセンターを使用:

CGPoint center = button.center;
button.frame = CGRectMake(button.frame.origin.x, button.frame.origin.y, 0, 0);
button.center = center;
于 2013-09-04T20:12:31.433 に答える
0

あなたも試すことができます:

[button setFrame:CGRectMake(button.frame.origin.x+button.frame.size.width/2, button.frame.origin.y+button.frame.size.height/2, 0, 0)];

コードでは、次のようになります。

[UIView animateWithDuration:0.5
                      delay:0.0
                    options: UIViewAnimationCurveEaseInOut
                 animations:^{
                             [button setFrame:CGRectMake(button.frame.origin.x+button.frame.size.width/2, button.frame.origin.y+button.frame.size.height/2, 0, 0)];

                }
                 completion:^(BOOL finished){
                            ...
于 2013-09-04T21:11:47.593 に答える
0
[button setCenter:CGPointMake(button.frame.origin.x,  button.frame.origin.y)];

これをコメントアウトして試してください。うまくいかない場合は、アニメーションの前に中心点を取得し、前述の rmaddy のようにその点のみを設定します。

于 2013-09-04T20:49:00.793 に答える
0

私はこれをテストしましたが、アニメーション全体でボタンを「縮小」して中心を維持します。

[UIView animateWithDuration:0.5 delay:0.0 options:0
 animations:^{
    button.transform = CGAffineTransformMakeScale(0, 0);
} completion:^(BOOL finished) {
    // ... remove button from super view?
}];
于 2013-09-04T21:31:10.737 に答える