重复UIButton动画并​​更改背景

时间:2014-11-05 00:32:26

标签: objective-c animation uibutton

有人可以告诉我为什么这不起作用吗?:

//Changing the Images
- (void) squareOneColour {
    NSUInteger r = arc4random_uniform(5);
    [self.squareOne setBackgroundImage:[self.colorArray objectAtIndex:r] forState:UIControlStateNormal];
}

//Moving buttons
- (void) squareOneMover {
    NSUInteger r = arc4random_uniform(3);

    [self.squareOne setHidden:NO];
    CGPoint originalPosition = self.squareOne.center;
    originalPosition.y = -55;

    [self.squareOne setCenter:originalPosition];
    CGPoint position = self.squareOne.center;
    position.y += 760;

    [UIView animateWithDuration:r + 3
                          delay:0.0
                        options:UIViewAnimationOptionAllowUserInteraction
                     animations:^{
                         [self.squareOne setCenter:position];
                     }
                     completion:^(BOOL complete) {
                         if (complete) {
                             [self squareOneColour];
                             [self squareOneMover];
                         }
                     }
    ];
}

我试图让UIButton在屏幕上制作动画,并在动画完成时重复,但背景不同。上面的代码似乎应该可以工作,但第二个动画永远不会完成。 (UIButton动画一次,然后一切都停止了)。我已经尝试将下面显示的代码(进入完成块),使用外部NSUInteger方法为r创建一个随机数,但它永远不会起作用。但是当我用不同的数字替换r时它会起作用,比如1或2。

2 个答案:

答案 0 :(得分:0)

我找到了答案。在玩完之后,我发现我希望UIButton执行的功能仅适用于UIImageView。我想我必须在UIImageView

上创建一个隐形按钮

答案 1 :(得分:0)

你踩着自己的脚。走出runloop的下一个循环,一切都会很好:

[self squareOneColour];
 dispatch_async(dispatch_get_main_queue(), ^{
      [self squareOneMover];
});