Изменение размера UIButton с анимацией

Я создаю меню, и я хочу, чтобы кнопки "pop" я предполагал на экране. В основном я хочу начать с размеров 0px, а затем перейти на полный размер кнопок. Я могу анимировать альфа и позицию, если хочу, но не могу делать измерения, и я думаю, что это потому, что изображение на кнопке.

Если я делаю 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 работает, но размер не изменился. Я также играл с stretchableImageWithLeftCapWidth, чтобы попытаться дать ему контекст или что-то, но безрезультатно.

Приветствую вас за помощь.

Ответы

Ответ 1

Не могли бы вы вместо этого использовать следующий код?

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];

Ваша кнопка должна начинаться немного больше, а затем сжиматься. Если это правильно масштабируется, просто отрегулируйте масштабный коэффициент до и после, чтобы он соответствовал.

Ответ 2

Обновлено для 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