【问题标题】:UIView animation durationUIView 动画时长
【发布时间】:2012-02-27 02:47:18
【问题描述】:

我有一个 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;

我做错了吗?

【问题讨论】:

    标签: ios animation


    【解决方案1】:

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

    (此外,整个beginAnimations / commitAnimations 结构虽然并未完全弃用,但实际上已被置于砧板上。这与您的问题无关,但如果可以的话,最好摆脱它,就这样原则。你应该使用animateWithDuration:delay:options:animations:completion:,或隐式层动画,或显式核心动画。)

    【讨论】:

    • 我已经更新了问题。你提到了[CATransaction setAnimationDuration:],我认为这行得通。我要去看看它。谢谢。
    • 这个问题仍然没有任何意义。 CAGradientLayer 不是 UIView,因此您不能将 UIView 动画与它一起使用。这是一个图层,因此您必须使用图层动画。如果这不是视图的主层,你可能会不小心做了隐式层动画;在这种情况下, CATransaction 是要走的路。但如果这是真的,你应该能够摆脱所有 UIView 的东西,动画仍然可以工作。否则,您可能会选择 Core Animation,这并没有错。你可能想阅读我关于这个主题的章节:apeth.com/iOSBook/ch17.html
    • CATransaction 确实有效。感谢您的回答。我也摆脱了 UIView 动画的东西,CATransaction 成功了 :-)
    • 太棒了!我的书解释了为什么。 :)
    猜你喜欢
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多