使用恒定中心减小UIButton大小

时间:2013-09-04 19:23:45

标签: ios uiview

我试图以这种方式动画减少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应用程序一样

5 个答案:

答案 0 :(得分:3)

在当前帧上使用CGRectInset生成一个比原始帧更小(或更大)的新帧,同时保持中心点。

[button setFrame:CGRectInset(button.frame, button.frame.size.width * 0.5, button.frame.size.height * 0.5)];

答案 1 :(得分:1)

使用原始中心:

CGPoint center = button.center;
button.frame = CGRectMake(button.frame.origin.x, button.frame.origin.y, 0, 0);
button.center = center;

答案 2 :(得分:0)

[button setCenter:CGPointMake(button.frame.origin.x,  button.frame.origin.y)];

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

答案 3 :(得分: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){
                            ...

答案 4 :(得分:0)

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

[UIView animateWithDuration:0.5 delay:0.0 options:0
 animations:^{
    button.transform = CGAffineTransformMakeScale(0, 0);
} completion:^(BOOL finished) {
    // ... remove button from super view?
}];