UIView动画持续时间

时间:2012-02-27 02:47:19

标签: ios animation

我有一个UIView,我想改变它的背景颜色。使用UIView beginAnimation:context:方法很有效。然而,动画'持续'大约1秒左右。我希望它持续5秒。这是我正在使用的代码:

- (void)updateSky:(NSString *)time {
    [UIView beginAnimations: @"backgroundUpdate" context:nil];
    [UIView setAnimationDuration: 5.0];

    gradient.colors = [NSArray arrayWithObjects: (id)[[UIColor colorWithRed:0x63/255.0f green:0xA9/255.0f blue:0xFF/255.0f alpha:1.0] CGColor],
                                                 (id)[[UIColor colorWithRed:0x8C/255.0f green:0xBF/255.0f blue:0xFF/255.0f alpha:1.0] CGColor], nil];

    if(time == @"night") {
        gradient.colors = [NSArray arrayWithObjects: (id)[[UIColor colorWithRed:0x1E/255.0f green:0x1E/255.0f blue:0x1E/255.0f alpha:1.0] CGColor],
                                                     (id)[[UIColor colorWithRed:0x2C/255.0f green:0x4C/255.0f blue:0x72/255.0f alpha:1.0] CGColor], nil];
    }

    [UIView commitAnimations];
}

gradient定义如下:

CAGradientLayer *gradient;

我做错了吗?

1 个答案:

答案 0 :(得分:1)

使用视图动画设置UIView背景颜色的动画方法是设置其backgroundColor属性。你似乎没有这样做。这件事gradient是什么,它的colors属性是什么?这里的问题似乎是你正在使用UIView动画,但是colors不是UIView可动画属性,所以这没有任何意义。您需要提供更多代码来显示您真正在做的事情。例如,如果这是隐式图层动画,则使用+[CATransaction setAnimationDuration:]来设置持续时间。

(同样,整个beginAnimations / commitAnimations结构虽然没有完全弃用,但实际上是在砧板上。这与你的问题无关,但如果你离开它会很好原则上你应该使用animateWithDuration:delay:options:animations:completion:,隐式图层动画或显式核心动画。)