iOS中的动画背景

时间:2012-01-04 22:44:49

标签: objective-c ios core-animation

我希望在我的iOS应用程序中加载视图后为我的背景设置动画。这适用于纯色,但我不能让它使用背景图像。这是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [UIView animateWithDuration:5.0 animations:^{
        self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];
        self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background_dark.png"]];
    }];

    [UIView commitAnimations];
}

有谁知道这样做的正确方法?

由于

3 个答案:

答案 0 :(得分:16)

你可以动画这样的事情:

view.backgroundColor = INITIAL COLOR
[UIView animateWithDuration:5.0 animations:^{
    view.backgroundColor = FINAL COLOR
}];

animate方法将当前状态的更改设置为动画块中设置的任何内容。动画块不是步骤列表。

因此,我认为你想要的是:

self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];
[UIView animateWithDuration:5.0 animations:^{
    self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background_dark.png"]];
}];

此外,请勿在之后调用commitAnimations,这仅限于您使用的是旧式beginAnimations方法。阅读文档,不要只是调用方法来查看它们是否有效。

答案 1 :(得分:3)

并非所有属性都可以像这样动画。背景图像很可能就是其中之一。您可以做的是在新图像的顶部显示第二个视图,并将其alpha设置为0到1。

答案 2 :(得分:0)

Ty this:

[UIView animateWithDuration:5.0 animations:^{
        self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];
    } completion:^(BOOL finished)
    {
        self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background_dark.png"]];
    }];