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

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

Если я сделаю 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];

Таким образом, альфа работает, но изменение размера не работает. Я также играл с stretchableImageWithLeftCapWidth, чтобы попытаться дать ему контекст или что-то в этом роде, но безрезультатно.

Спасибо за вашу помощь.


person Rudiger    schedule 30.06.2010    source источник
comment
Вы пробовали сделать кнопку Scale To Fill?   -  person iwasrobbed    schedule 30.06.2010
comment
да, не забудьте попробовать это на одном этапе. Кто тебя ограбил?   -  person Rudiger    schedule 30.06.2010


Ответы (2)


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

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

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

person davbryn    schedule 30.06.2010
comment
Спасибо, я посмотрю и вернусь к вам. - person Rudiger; 30.06.2010
comment
Это не сработало сразу. Кнопка = CGAffineTransformMakeScale(1.5,1.5); выдал ошибку. Но в основном вы можете сделать это button.transform = CGAffineTransformMakeScale(1.5,1.5); и это анимирует увеличение масштаба, как мне нужно. Спасибо :) - person Rudiger; 02.07.2010
comment
Отличный материал - я изменил пример кода для всех, кто может захотеть его использовать. - person davbryn; 02.07.2010

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