2015-07-28 6 views
1

У меня есть кнопка, которую я хотел бы анимировать фоновым цветом, как если бы он заполнялся снизу вверх.Анимация UIButton Цвет фона снизу вверх, Цель C

Прямо сейчас я просто изменить цвет с анимацией

т.е.

[UIView animateWithDuration:2.0 animations:^{ 
    button.layer.backgroundColor = [UIColor redColor].CGColor; 
} completion:NULL]; 

Это прекрасно работает, но я люблю анимацию, чтобы заполнить снизу вверх, как он наполняется жидкость.

EDIT: не уверен, если это имеет значение, но кнопка круглая

+0

Не могли бы вы «подделать», если цветной снимок сойдет со дна? – mbm29414

ответ

3

Попробуйте это. Здесь btn - это выход на вашу кнопку, а v - это представление, которое мы добавим к вашей кнопке для анимации.

UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, [self btn].frame.size.height, 
                [self btn].frame.size.width, [self btn].frame.size.height)]; 
[v setBackgroundColor:[UIColor purpleColor]]; 
v.userInteractionEnabled = NO; 
v.exclusiveTouch = NO; 
[[self btn] addSubview:v]; 

[UIView animateWithDuration:0.45 animations:^{ 

    CGRect currentRect = v.frame; 
    currentRect.origin.y = 0; 
    [v setAlpha:1]; 
    [v setFrame:currentRect]; 
    [[self btn] sendSubviewToBack:v]; 
}]; 
+0

Работали, как шарм, вы, сэр/мадам, потрясающие – JKX

+0

Хорошо, небольшая проблема, кнопка не может быть нажата после перехода – JKX

+1

После настройки цвета фона попробуйте это - v.userInteractionEnabled = NO; v.exclusiveTouch = NO; – Avi

0

Если вам нужно только фоновое заполнение цвета снизу вверх, можно создать дополнительный слой с этим цветом и происхождение Y = CGRectGetHeight (кнопка. Рамка). Когда вам нужно заполнить вашу кнопку, просто оставьте начало Y этого слоя до 0.