相关疑难解决方法(0)

你如何明确动画CALayer的backgroundColor动画?

我正在尝试构建一个CABasicAnimation来动画Core Animation CALayer的backgroundColor属性,但我无法弄清楚如何正确地包装CGColorRef值以传递给动画.例如:

CGColorSpaceRef rgbColorspace = CGColorSpaceCreateDeviceRGB();
CGFloat values[4] = {1.0, 0.0, 0.0, 1.0}; 
CGColorRef red = CGColorCreate(rgbColorspace, values); 
CGColorSpaceRelease(rgbColorspace);

CABasicAnimation *selectionAnimation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
[selectionAnimation setDuration:0.5f];
[selectionAnimation setToValue:[NSValue valueWithPointer:red]];
[layer addAnimation:selectionAnimation forKey:@"selectionAnimation"];
Run Code Online (Sandbox Code Playgroud)

似乎对backgroundColor属性没有任何作用,我假设因为将它作为包裹在NSValue中的指针移交它不是传递它的方法.

backgroundColor是CALayer的一个可动画属性,所以我的问题是:如何设置此特定属性的From或To值(最好是以Mac/iPhone平台无关的方式)?

iphone macos cocoa core-animation

34
推荐指数
1
解决办法
2万
查看次数

动画`uIView`的`backgroundColor`实现`drawRect`

我有一个自定义的UIView,我想动画它的backgroundColor属性.这是一个动画属性UIView.

这是代码:

class ETTimerUIView: UIView {
  required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
  }
  // other methods
  func flashBg() {
    UIView.animateWithDuration( 1.0, animations: {
      self.backgroundColor = UIColor.colorYellow()
    })
  }
  override func drawRect() {
    // Something related to a timer I'm rendering
  }
Run Code Online (Sandbox Code Playgroud)

此代码导致动画跳过并且颜色立即更改:

self.backgroundColor = UIColor.colorYellow() // Changes immediately to yellow
Run Code Online (Sandbox Code Playgroud)

如果我为alpha设置动画,则会按预期在1秒内激活1到0:

self.alpha = 0 // animates
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如何设置背景颜色变化的动画?

我想我需要制作一个单独的视图 - 这应该放在同一个视图控制器的故事板中吗?以编程方式创建?

对不起,我是iOS和Swift的新手.

uiview uiviewanimation ios swift

7
推荐指数
1
解决办法
3974
查看次数

在UIView中将背景颜色从一种颜色淡化为另一种颜色

如何在UIView中从一种背景颜色淡化为另一种颜色?

在javascript(jQuery)中,可以通过执行以下操作来完成:
$('body').animate({ backgroundColor: "#ff00ff"});

如果我将颜色转换为HSV会更容易吗?

编辑:试图用CABasicAnimation做它,但它由于不明原因闪烁白色.:/

CABasicAnimation* fade = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
fade.fillMode = kCAFillModeForwards;
fade.removedOnCompletion = NO;
// fade.fromValue = (id)[self.view backgroundColor].CGColor;
fade.toValue = (id)[UIColor greenColor].CGColor;
[self.view.layer addAnimation:fade forKey:@"fade"];
Run Code Online (Sandbox Code Playgroud)

然后我试图找到另一种方法去做,并偶然发现"隐式动画".以下工作与一秒钟的漂亮淡出:

[UIView beginAnimations:@"fade" context:nil];
[UIView setAnimationDuration:1];
[[self view] setBackgroundColor: [UIColor greenColor]];
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

谢谢,StackOverflow,帮助每个人学习更多.:)

iphone uiview uicolor cabasicanimation caanimation

5
推荐指数
1
解决办法
5189
查看次数