是否可以为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"];
答案 0 :(得分:0)
你可以做到,但你必须以不同的方式对动画进行编码。查看Apple的核心动画编程指南",找到关于" CALayer Animatable Properties"的部分。您可以看到borderWidth是可动画的,但您需要使用该文档中描述的默认隐含CABasicAnimation对象。
我过去曾做过这种事情 - 但多年前对具体细节却如此迷茫。但你可以肯定它是有效的。