动画UIButton边框粗细

时间:2015-06-19 14:59:10

标签: ios objective-c uibutton

是否可以为UIButton的边框粗细设置动画?

我尝试了以下操作,但我只是在两个厚度之间快速闪现,我试图在它们之间制作动画。

//animate border thickness
    UIButton *btn = _barButton;
    CALayer *buttonLayer = [btn layer];

        [buttonLayer setBorderWidth:0.0f];
        [UIView animateWithDuration:1.0f animations:^{

            [buttonLayer setBorderWidth:15.0f];

        } completion:^(BOOL finished){

            [UIView animateWithDuration:1.0f animations:^{

                [buttonLayer setBorderWidth:2.5f];

            } completion:nil];
        }];

编辑:根据David H的建议,这可以通过CABasicAnimation完成。

UIButton *btn = _barButtons;
CALayer *buttonLayer = [btn layer];

//animate border thickness
CABasicAnimation *animation = [CABasicAnimation animation];
animation.keyPath = @"borderWidth";
animation.fromValue = @0.0;
animation.toValue = @5.0;
animation.duration = 0.25;
[buttonLayer addAnimation:animation forKey:@"basic"];

1 个答案:

答案 0 :(得分:0)

你可以做到,但你必须以不同的方式对动画进行编码。查看Apple的核心动画编程指南",找到关于" CALayer Animatable Properties"的部分。您可以看到borderWidth是可动画的,但您需要使用该文档中描述的默认隐含CABasicAnimation对象。

我过去曾做过这种事情 - 但多年前对具体细节却如此迷茫。但你可以肯定它是有效的。