UIButton добавляет цвет с анимацией

Что я хочу сделать, так это то, что когда пользователь нажимает кнопку, кнопка должна заполняться цветом с анимацией снизу вверх.

Я пробовал это, добавляя цвет, но эффект анимации не добавлялся.

float originalY = btn.frame.origin.y;
float originalH = btn.bounds.size.height;

[UIView animateWithDuration:3.0f
                      delay:1.0f
                    options:UIViewAnimationOptionTransitionFlipFromBottom
                 animations:^{

    btn.frame = CGRectMake(btn.frame.origin.x, (originalY + originalH), btn.bounds.size.width, 0);
    [btn setBackgroundImage:[UIImage imageNamed:@"Screen Shot 2012-11-07 at 4.22.30 PM.png"] forState:UIControlStateNormal];
    [btn setTitleColor:[[UIColor alloc]initWithRed:38.0/255.0 green:38.0/255.0 blue:38.0/255.0 alpha:1.0] forState:UIControlStateNormal];
} completion:^(BOOL finished) {
}];

person Prashant Chaudhari    schedule 07.11.2012    source источник
comment
Вы установили цвет перед блоком анимации?   -  person malinois    schedule 08.11.2012
comment
Нет, я установил цвет только в блоке анимации. Ставится, только анимация не идет.   -  person Prashant Chaudhari    schedule 08.11.2012


Ответы (2)


Лучшим решением было бы создать подкласс UIButton и добавить метод, который изменяет альфа-значение фонового изображения с 0 на 1.

Или вы можете просто переопределить метод drawRect и заполнить фон цветом.

person MweyaMutsvene    schedule 08.11.2012

я думаю, вы, вероятно, делаете что-то подобное, я использовал UIlabel, это также может работать для UIButton to .

#import <QuartzCore/QuartzCore.h>

....

'theLabel.layer.backgroundColor = [UIColor whiteColor].CGColor;

[UIView animateWithDuration:2.0 animations:^{ theLabel.layer.backgroundColor = [UIColor greenColor].CGColor; } завершение:NULL];'`

person bLacK hoLE    schedule 12.08.2014
comment
Это не изменит цвет снизу вверх - однако он может изменить цвет всей кнопки, но я не думаю, что это вопрос... - person Moonwalker; 12.08.2014
comment
увеличьте время в animateWithDuration: и это покажет эффект, спасибо. - person bLacK hoLE; 12.08.2014