【问题标题】:UIView Animation not working - iOSUIView 动画不起作用 - iOS
【发布时间】:2014-08-06 14:24:07
【问题描述】:

我正在尝试为一个简单的 UIImageView 设置动画,但它不起作用。这是我的代码:

在我的头文件中,我已将“light_bulb”声明为 UIImageView。

NSMutableArray *bulb_off_images = [[NSMutableArray alloc] init];

for (int loop = 0; loop < 11; loop++) {

    if (loop >= 10) {
        [bulb_off_images addObject:[UIImage imageNamed:[NSString stringWithFormat:@"bulb_off-%d.png", loop]]];
    }

    else {
        [bulb_off_images addObject:[UIImage imageNamed:[NSString stringWithFormat:@"bulb_off-0%d.png", loop]]];
    }
}

[UIView animateWithDuration:0.5 delay:2.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
    light_bulb.animationImages = bulb_off_images;

} completion:^(BOOL finished){

    if (finished) {
        NSLog(@"Finished !!!!!");
    }
}];

代码似乎运行并调用了完成块,但动画没有发生.....

**更新 1 **

我尝试以这种方式制作动画,但我需要一种方法来阻止动画重复自身。我怎么知道何时调用“stopAnimating”。这是我的代码:

light_bulb.animationImages = bulb_off_images;
light_bulb.animationDuration = 0.5;
light_bulb.animationRepeatCount = 0;
[light_bulb startAnimating];

我做错了什么?

【问题讨论】:

  • 您不能为对 UI 没有影响的属性更改设置动画。我要冒昧地说你对这些课程的运作方式有一些基本的误解。阅读文档(UIViewUIImageView),它们会帮助你。
  • 如果您阅读图像视图的类参考,您可以更轻松地做到这一点。
  • @esqew 我用另一种可行的动画方法更新了我的答案,但是我现在的问题是我无法阻止动画重复。
  • 如果您按照我的建议阅读了文档,您就会知道,对于animationRepeatCount“默认值为 0,它指定无限期地重复动画。”我>
  • @esqew 对。我在这里完全是懒惰的白痴。我的印象是 0 意味着它将运行一次然后不再重复。谢谢你的帮助。如果你把它放在答案中,我很乐意打勾先生。

标签: ios objective-c animation uiview uiimageview


【解决方案1】:

关于您最初的问题,您的解决方案过于复杂。 UIImageView 内置动画方法。看起来您正在尝试将它们与 UIView 的动画功能结合使用,这不会完全按照您的计划工作。查看每个的文档,并决定您想使用哪些类的动画功能。

(对于图像,UIImageView 的动画方法似乎是首选方式。)


关于你的第二个问题:在documentation for UIImageViewanimationRepeatCount状态下的注释:

默认值为0,表示动画无限重复。

animationRepeatCount 设置为 1 应该只播放一次动画。

【讨论】:

  • 谢谢先生。确实很有帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
相关资源
最近更新 更多