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 setCenter:CGPointMake(button.frame.origin.x,  button.frame.origin.y)];

评论这个并尝试。如果它不起作用,请在动画之前获取中心点并按照 rmaddy 所述专门设置该点。

于 2013-09-04T20:49:00.793 回答
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

我已经对此进行了测试,它“缩小”了在整个动画中保持中心的按钮。

[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 回答