动画UIButton背景颜色自下而上,目标C

时间:2015-07-28 19:09:15

标签: ios objective-c animation uibutton

我有一个按钮,我想为背景颜色设置动画,就像它从底部到顶部填充一样。

现在我只是用动画改变颜色

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

这很好用,但我喜欢动画从下往上填充,就好像它充满液体一样。

编辑:不确定它是否有所作为,但按钮是圆的

3 个答案:

答案 0 :(得分:4)

试试这个。这里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];
}];

答案 1 :(得分:1)

Avi版本的Swift版本。

let v = UIView(frame: CGRect(x: 0, y: self.btn.frame.size.height, 
                                   width: self.btn.frame.size.width,
                                   height: self.btn.frame.size.height))
v.backgroundColor = .purple
v.isUserInteractionEnabled = false
v.isExclusiveTouch = false
self.btn.addSubview(v)

UIView.animate(withDuration: 0.45) {
    var currentRect = v.frame
    currentRect.origin.y = 0
    v.alpha = 1.0
    v.frame = currentRect
    self.btn.sendSubview(toBack: v)
}

答案 2 :(得分:0)

如果您只需要从底部到顶部填充背景颜色,则可以使用该颜色创建其他图层并使用原点Y = CGRectGetHeight(button.frame)。当您需要填充按钮时,只需将该图层的原点Y设置为0。