【问题标题】:iOS Obj-c gradient background transitioniOS Obj-c 渐变背景过渡
【发布时间】:2020-08-08 13:46:44
【问题描述】:

我想逐渐改变背景渐变

gradient.colors = [NSArray arrayWithObjects:(id)[UIColor.blackColor CGColor],(id)[UIColor.blueColor CGColor], nil];

gradient.colors = [NSArray arrayWithObjects:(id)[UIColor.grayColor CGColor],(id)[UIColor.cyanColor CGColor], nil];

[编辑]我当前的代码是:

                gradient.colors = [NSArray arrayWithObjects:(id)[UIColor.blackColor CGColor],(id)[UIColor.blueColor CGColor], nil];
                NSArray *fromColors = gradient.colors;
                NSArray *toColors =[NSArray arrayWithObjects:(id)[UIColor.grayColor CGColor],(id)[UIColor.cyanColor CGColor], nil];
                CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath: @"colors"];

                animation.fromValue = fromColors;
                animation.toValue = toColors;
                animation.duration = 3.00;
                animation.removedOnCompletion = false;
                animation.autoreverses = NO;
                animation.fillMode = kCAFillModeForwards;
                animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear];
                if (![gradient.animationKeys containsObject:@"colors"]) {
                    [gradient addAnimation:animation forKey:@"colors"];
                }
                [self.background.layer addSublayer:gradient];

但它什么也没做。有人可以帮帮我吗?

【问题讨论】:

    标签: ios objective-c xcode animation gradient


    【解决方案1】:

    我认为CABasicAnimation.keypath中不支持“颜色”。但是如何满足要求,我仍然想不出答案。https://stackoverflow.com/questions/5459673/how-can -i-know-the-values-in-cabasicanimation-keypath

    【讨论】:

    • 谢谢,诀窍是添加“backgroundColor”作为keypath
    • 但是,添加“backgroundColor”会将背景更改为单色背景,而不是渐变。键路径颜色是正确的,但我犯了一个错误:我有两个渐变,self.gradient 和渐变。有时会发生 Noob 错误
    猜你喜欢
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 2020-04-15
    • 2011-12-09
    • 2013-07-30
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多