重复 UIButton 动画并更改背景
Posted
技术标签:
【中文标题】重复 UIButton 动画并更改背景【英文标题】:Repeating UIButton animation and change background 【发布时间】:2014-11-05 00:32:25 【问题描述】:谁能告诉我为什么这不起作用?:
//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)时,它确实有效。
【问题讨论】:
【参考方案1】:我找到了答案。玩了之后,我发现我想要UIButton
做的功能只适合UIImageView
。我想我必须在UIImageView
上制作一个隐形按钮
【讨论】:
这与它无关。您的代码中的任何内容都不适用于 UIButton。我试过了,效果很好(当然是我的改动)。 而且图像视图上的按钮很愚蠢。如果您想要可点击性,请使用手势识别器。【参考方案2】:你是在踩自己的脚。跳出runloop的下一个循环,一切都会好起来的:
[self squareOneColour];
dispatch_async(dispatch_get_main_queue(), ^
[self squareOneMover];
);
【讨论】:
我试试看。你能解释一下这是做什么的吗?以上是关于重复 UIButton 动画并更改背景的主要内容,如果未能解决你的问题,请参考以下文章