作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个自定义 UITableView 单元格,其中有一个按钮和一个标签。当有人点击按钮时,我会触发一个方法,然后为该行着色。一切正常。
我真正想做的是
我的代码如下(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/
我是一名优秀的程序员,十分优秀!