gpt4 book ai didi

iphone - CAGradientLayer 中的 CABasicAnimation 不起作用 - 我做错了什么?

转载 作者:行者123 更新时间:2023-12-03 18:56:54 24 4
gpt4 key购买 nike

我有一个自定义 UITableView 单元格,其中有一个按钮和一个标签。当有人点击按钮时,我会触发一个方法,然后为该行着色。一切正常。

我真正想做的是

  1. 用户点击按钮,该行以渐变颜色显示(现在可以使用)
  2. 渐变消失

我的代码如下(BackView 是我的自定义单元格中的 View )

CAGradientLayer *layer = [CAGradientLayer layer];
layer.frame = BackView.bounds;

UIColor *cOne = [UIColor paleYellowColor];
UIColor *cTwo = [UIColor whiteColor];

NSArray *colors = [NSArray arrayWithObjects:(id)cOne.CGColor,
cTwo.CGColor, nil];

layer.colors = colors;

NSNumber *stopOne = [NSNumber numberWithFloat:0.00];
NSNumber *stopTwo = [NSNumber numberWithFloat:0.8];

NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, nil];
layer.locations = locations;

CABasicAnimation *animateLayer = [CABasicAnimation animationWithKeyPath:@"colors"];
animateLayer.fromValue = [UIColor paleYellowColor];
animateLayer.toValue = [UIColor whiteColor];
animateLayer.duration = 3.0;
animateLayer.removedOnCompletion = YES;
animateLayer.fillMode = kCAFillModeBoth;
animateLayer.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[layer addAnimation:animateLayer forKey:@"animation"];

[BackView.layer insertSublayer:layer atIndex:0];

使用这段代码,当我触摸该行上的按钮时,背景会出现渐变,但它永远不会消失,没有动画 - 什么也没有。我究竟做错了什么?我尝试了一些排列并看到了一些示例,但没有一个可以帮助我实现此目的。

谢谢!

最佳答案

当您使用显式动画为属性设置动画时,您已经提供了该属性所需的类型。颜色属性是可设置动画的,但是,您要为它指定一个 UIColor 作为起始值和终止值。它期待一个 NSArray。此外,您还需要 CGColorRefs 作为颜色本身。我还没有尝试过,但我认为你需要将你的来回线更改为:

animateLayer.fromValue = [NSArray arrayWithObjects:
(id)[[UIColor paleYellowColor] CGColor],
(id)[[UIColor whiteColor] CGColor], nil];

animateLayer.toValue = [NSArray arrayWithObjects:
(id)[[UIColor whiteColor] CGColor],
(id)[[UIColor whiteColor] CGColor], nil];

理论上,这应该从黄/白渐变渐变为白/白,从而产生淡出的效果。

致以诚挚的问候。

关于iphone - CAGradientLayer 中的 CABasicAnimation 不起作用 - 我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3271873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com