Ios 如何逐渐降低UIButton的不透明度?

Ios 如何逐渐降低UIButton的不透明度?,ios,objective-c,iphone,uibutton,uianimation,Ios,Objective C,Iphone,Uibutton,Uianimation,在我的项目中,我有一个UIButton,单击它可以缩放。在这里之前一切都很好,但我要求按钮的不透明度从1逐渐降低到0。我的意思是它应该以1,0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1,0.0的顺序减少。我现在的代码是 -(void)roundButtonAnimation { self.buttonZoom = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; self.butto

在我的项目中,我有一个UIButton,单击它可以缩放。在这里之前一切都很好,但我要求按钮的不透明度从1逐渐降低到0。我的意思是它应该以1,0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1,0.0的顺序减少。我现在的代码是

    -(void)roundButtonAnimation
{
    self.buttonZoom = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
    self.buttonZoom.duration = 0.8f;
    self.buttonZoom.values = @[[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 1, 1)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(2,2,2)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(3,3,3)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(5,5,5)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(6,6,6)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(7,7,7)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(9,9,9)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(10,10,10)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(11,11,11)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(12,12,12)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(13,13,13)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(14,14,14)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(15,15,15)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(16,16,16)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(17,17,17)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(18,18,18)],[NSValue valueWithCATransform3D:CATransform3DMakeScale(50,50,50)]];
    self.buttonZoom.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
    self.roundButton.transform = CGAffineTransformMakeScale(0,0);
    self.roundButton.alpha = 0.3;
    [self.roundButton.layer addAnimation:self.buttonZoom forKey:@"buttonScale"];

[self.CLSpinnerView1 stopAnimating];
    //[self performSelector:@selector(secondView) withObject:self afterDelay:0.3];

    [self performSelector:@selector(postNotification) withObject:self afterDelay:0.6];
}

UIView animateWithDuration:animations:
应该可以满足您的需要

[UIView animateWithDuration:1.0 animations:^{
    button.alpha = 0.0;
}];
将在一秒钟内逐渐将按钮的alpha更改为0(
…持续时间:1.0…

有关更多信息,请参阅

希望这有帮助。

试试这个

[button.layer removeAnimationForKey:@"opacity"];
让我们稍微解释一下,在这个动画块中,您说动画应该在一秒钟内发生,在这一秒钟内,基于线性曲线(因此始终等于增量/减量),按钮应该缩放50倍,alpha应该设置为0。
我不明白你为什么在那个简单的动画块上使用更复杂的
CAKeyframeAnimation


关键帧动画在您希望在计时和一组值上设置更多动画时非常有用。

是什么产生了此代码?怎么了?有什么特别的原因不使用简单变换和alpha动画使用曲线线性吗?@Andrea simple transform and alpha animations curve linear。。。是否可以使用此代码进行缩放???@Ilario此代码将按钮缩放两个动画,一个用于缩放,另一个用于alpha(不透明度),然后将它们添加到CAAnimationGroup并将该组分配给您的按钮/方法。
[UIView animateWithDuration:1.0
                          delay:0.0
                        options: UIViewAnimationCurveLinear
                     animations:^{
                         self.roundButton.transform = CGAffineTransformMakeScale(50.0f, 50.0f);
                         self.roundButton.alpha = 0.0;
                     } 
                     completion:^(BOOL finished){
                         NSLog(@"Done!");
                     }];
}