我希望在我的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];
}
有谁知道这样做的正确方法?
由于
答案 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"]];
}];