【发布时间】:2013-03-23 17:17:10
【问题描述】:
我正在为一些子视图制作动画,动画的步骤之一是更改视图背景颜色。但是,尽管我有一个返回随机颜色的函数,但一旦设置了背景颜色,在动画定义期间,它就不会再次调用我的函数来获取另一种颜色。
有什么方法可以强制动画在每次执行动画时调用我的函数?
片段:
for (UIView* subView in self.view.subviews) {
dispatch_async(dispatch_get_main_queue(), ^{
[UIView animateWithDuration:1.0f
delay:0.0f
options: UIViewAnimationOptionRepeat
animations:^{
subView.backgroundColor = getRandomColor();
}
completion:nil];
});
}
【问题讨论】:
-
你能告诉我们你正在尝试的代码吗?
-
问题是,一旦为动画设置了颜色,当它重复动画时,它就不会再次调用我的函数来获取另一种颜色。我希望每次动画重复时,它都会以不同的颜色重复。
-
您可以尝试将 getRandomColor() 的输出分配到 UIView 动画块外的 UIColor 变量中,然后将背景颜色设置为动画块内的该变量吗?
-
据此:stackoverflow.com/questions/3762561/… - 尝试使用 subview.layer 而不是 subview。如果 GCD 没有犯规,它似乎是这样工作的。
-
它还没有工作,甚至动画层而不是 UIView 本身。
标签: ios objective-c animation uiview