UIButton通过动画调整大小

时间:2010-06-30 00:04:22

标签: iphone animation uiview uiimage uibutton

我正在创建一个菜单,我想按钮在屏幕上“弹出”。基本上我想从0px尺寸开始,然后达到按钮的全尺寸。如果我愿意,我可以设置alpha和位置的动画,但不能做维度,我认为它是因为它是按钮上的图像。

如果我执行UIButtonTypeRoundRect,您可以看到按钮在图像后面进行动画处理,但图像是静态的。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
button.frame = CGRectMake(20, 20, 0, 0);
button.alpha = 0;
[self.view addSubview:button];
CGRect frame = button.frame;
[UIView beginAnimations:@"button" context:nil];
[UIView setAnimationDuration:1];
button.alpha = 1;
frame.size.width += 53;
frame.size.height += 53;
button.frame = frame;
[UIView setAnimationDelegate:self];
[UIView commitAnimations];

所以Alpha工作但调整大小没有。我也玩过stretchchableImageWithLeftCapWidth试图给它上下文或其他东西,但无济于事。

为你的帮助干杯。

2 个答案:

答案 0 :(得分:32)

您可以尝试使用以下代码吗?

button.transform = CGAffineTransformMakeScale(1.5,1.5);
button.alpha = 0.0f;

[UIView beginAnimations:@"button" context:nil];
[UIView setAnimationDuration:1];
     button.transform = CGAffineTransformMakeScale(1,1);
     button.alpha = 1.0f;
[UIView commitAnimations];

您的按钮应该稍微开始然后缩小。如果这可以正确缩放,只需调整前后比例因子即可。

答案 1 :(得分:5)

针对Swift进行了更新:

您可以将其插入任何与按钮绑定的IBAction中,以便在触摸时为其设置动画。

    // animate button
    // play with the scale (1.25) to adjust to your liking
    yourButton.transform = CGAffineTransformMakeScale(1.25, 1.25)
    yourButton.alpha = 0.0

    UIView.beginAnimations("yourButton", context: nil)
    // play with the animationDuration to adjust to your liking
    UIView.setAnimationDuration(0.25)
    yourButton.transform = CGAffineTransformMakeScale(1.0, 1.0)
    yourButton.alpha =  1.0