【问题标题】:How can I make an animation correlate to the current position of a UIImageView?如何使动画与 UIImageView 的当前位置相关?
【发布时间】:2014-05-20 19:08:02
【问题描述】:

我有一个在 2 个不同图像之间变化的 ImageView。当事件发生并且它在 ImageView1 中时,我希望它播放特定的动画。当一个事件发生并且它在 ImageView2 中时,我希望它播放一个特定的、不同的动画。到目前为止,我的代码设置基本上是

if (ImageView1 == YES)
{
ImageView.animationImages = [NSArray arrayWithObjects:
                            [UIImage imageNamed:@"ImageAnimate1.png"],
                            [UIImage imageNamed:@"ImageAnimate2.png"],
                            [UIImage imageNamed:@"ImageAnimate3.png"],
                            [UIImage imageNamed:@"ImageAnimate4.png"], nil];
    [ImageView setAnimationRepeatCount:1];
    ImageView.animationDuration = 1;
    [ImageView startAnimating];
}

else
{
    ImageView.animationImages = [NSArray arrayWithObjects:
                                [UIImage imageNamed:@"ImageAnimate5.png"],
                                [UIImage imageNamed:@"ImageAnimate6.png"],
                                [UIImage imageNamed:@"ImageAnimate7.png"],
                                [UIImage imageNamed:@"ImageAnimate8.png"], nil];
    [ImageView setAnimationRepeatCount:1];
    ImageView.animationDuration = 1;
    [ImageView startAnimating];
}

我知道它不需要有 2 组不同的动画重复和持续时间,但这只是开始,以防它们稍后发生变化。

主要问题是,第一组动画只有在我当前将其设置为 ImageView1 时才会播放。我的意思是,如果我在左侧点击/触摸屏幕,它会创建 ImageView1,如果我在右侧点击,它会创建 ImageView2。如何将它从当前必须向左点击才能播放该动画,改为仅在 ImageView 当前显示时播放动画?

它可能就像将它设置为当前的 UIImage 一样简单,但我不确定该怎么做。

换句话说,我想以某种方式写作。

if (UIImage ImageViewLeft = YES)
    ImageView.animationImages etc etc etc.

else ImageView.animationImages would be the second variation.

编辑:我只是将其更改为

 if (ImageView.image == [UIImage imageNamed:@"ImageLeft.png"])
     { code here

虽然现在我无法改变方向,直到另一个事件发生。本质上,它将被卡在左侧或右侧,直到事件发生,然后它与正确的图像相关联。 .

【问题讨论】:

    标签: ios animation methods uiimageview


    【解决方案1】:

    一种简单的方法是为 imageIsRight 创建一个 BOOL。当您开始在右侧播放动画时将其设置为 YES,当它向左播放时将其设置为 NO。然后创建一个每 0.05 秒触发一次的计时器(或任何有效的时间)。该计时器可以调用一个方法来检查您创建的 BOOL 并重复/继续当前动画或停止它并启动另一个。

    上述细节可能不适合您的场景,这对我来说有点模糊,但该方法应该可以让您到达您需要的地方。

    【讨论】:

    • 我已经有一个布尔值了。很抱歉没有尽可能具体。它本质上是左右的 BOOL。如果发生某些事情,left 会将其设置为等于 left,如果另一个语句在代码中较早发生,则将其设置为 right。不过,这段代码中已经显示了它。
    • 那么如何在循环中设置一个计时器来检测布尔值并播放或切换动画?你试过了吗...我敢打赌它会完成你所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    相关资源
    最近更新 更多