Iphone 如何制作UIButton“;闪光“;(使用辉光,或在瞬间更改其图像)

Iphone 如何制作UIButton“;闪光“;(使用辉光,或在瞬间更改其图像),iphone,uibutton,Iphone,Uibutton,我试着将图像切换到黑色,然后使用sleep(1)将其恢复到原始图像,但睡眠在正确的时间不起作用,我甚至看不到黑色闪光灯,因为它转得太快了 [blueButton setImage:[UIImage ImageName:@“black.png”]用于状态:UIControlStateNormal]; 睡眠(3); [blueButton setImage:[UIImage ImageName:@“blue.png”]用于状态:UIControlStateNormal] 我只想让它给这个按钮一个指示

我试着将图像切换到黑色,然后使用sleep(1)将其恢复到原始图像,但睡眠在正确的时间不起作用,我甚至看不到黑色闪光灯,因为它转得太快了

[blueButton setImage:[UIImage ImageName:@“black.png”]用于状态:UIControlStateNormal]; 睡眠(3); [blueButton setImage:[UIImage ImageName:@“blue.png”]用于状态:UIControlStateNormal]


我只想让它给这个按钮一个指示器。有什么想法吗?谢谢。

在给定的时间间隔后,呼叫计时器通知您:

[+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats][1]
给它一个简单的方法作为选择器,它会将图像变回蓝色

[blueButton setImage:[UIImage imageNamed:@"black.png"] forState:UIControlStateNormal];
[NSTimer timerWithTimeInterval:yourTimeInterval target:self selector:@selector(changeButtonBack:) userInfo:nil repeats:NO];

-(void) changeButtonBack:(id)sender{
    [blueButton setImage:[UIImage imageNamed:@"blue.png"] forState:UIControlStateNormal];
}
现在,这个方法将在您指定的任何时间间隔后被调用,按钮将返回蓝色

注意:进行此调用后,代码将继续执行。这称为设置回拨,因为您的代码一直在执行,在指定的时间之后,系统会回拨并告诉您执行指定的函数


如果您想在不同的地方有不同的行为,可以指定不同的选择器(read:methods to callback),或者可以传入某种类型的对象作为
userInfor
参数,在示例中我将其设置为
nil
。然后,当您收到回电时,请检查
userInfo
对象的值,并根据它的内容执行所需操作。

在给定的时间间隔后调用计时器通知您:

[+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats][1]
给它一个简单的方法作为选择器,它会将图像变回蓝色

[blueButton setImage:[UIImage imageNamed:@"black.png"] forState:UIControlStateNormal];
[NSTimer timerWithTimeInterval:yourTimeInterval target:self selector:@selector(changeButtonBack:) userInfo:nil repeats:NO];

-(void) changeButtonBack:(id)sender{
    [blueButton setImage:[UIImage imageNamed:@"blue.png"] forState:UIControlStateNormal];
}
现在,这个方法将在您指定的任何时间间隔后被调用,按钮将返回蓝色

注意:进行此调用后,代码将继续执行。这称为设置回拨,因为您的代码一直在执行,在指定的时间之后,系统会回拨并告诉您执行指定的函数


如果您想在不同的地方有不同的行为,可以指定不同的选择器(read:methods to callback),或者可以传入某种类型的对象作为
userInfor
参数,在示例中我将其设置为
nil
。然后,当您被回调时,检查
userInfo
对象的值,并根据它的内容执行所需操作。

您需要使用NSTimer来更改图像,然后安排一个计时器在3秒钟后再次更改图像


睡眠(3)不起作用的原因是,在从方法(函数)返回后,直到控件返回到运行循环,映像才会更新。

您需要使用NSTimer来更改映像,然后安排一个计时器在3秒钟后再次更改映像


sleep(3)不起作用的原因是,在从方法(函数)返回后,直到控件返回到run循环,图像更新才会发生。

我认为在这种情况下使用NSTimer是过分的

UIButton公开了一个名为imageView的方便属性,该属性允许您访问底层

假设您的按钮被称为recButton,您可以按如下方式准备动画:

recButton.imageView.animationImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"recButtonOFF"], [UIImage imageNamed:@"recButtonON"], nil];
recButton.imageView.animationRepeatCount = 0;
recButton.imageView.animationDuration = 1.0;
然后在设计的选择器中使用以下命令启动/停止动画:

        [recButton.imageView startAnimating]; //start the animation

        ...

        [recButton.imageView stopAnimating]; //stop the animation

我认为在这个案例中使用NSTimer是过分的

UIButton公开了一个名为imageView的方便属性,该属性允许您访问底层

假设您的按钮被称为recButton,您可以按如下方式准备动画:

recButton.imageView.animationImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"recButtonOFF"], [UIImage imageNamed:@"recButtonON"], nil];
recButton.imageView.animationRepeatCount = 0;
recButton.imageView.animationDuration = 1.0;
然后在设计的选择器中使用以下命令启动/停止动画:

        [recButton.imageView startAnimating]; //start the animation

        ...

        [recButton.imageView stopAnimating]; //stop the animation

所以对于yourTimeInterval参数,如果我想在两个映像切换之间留出一秒钟,我会只放一个1,还是像API中所说的,它必须是NSTimeInterval类型?NSTimeInterval只是一个双精度参数,所以可以在其中传递1.0或任何值。好吧,假设我不想执行特定的方法,因为我希望能够在几种情况下使用它,所以我只希望它启动,什么也不做,然后在一两秒钟后运行下一行代码。我该怎么做?或者它会安排事件发生,然后继续执行其余的代码,而不是等待实际的一秒钟来进行闪烁?因此对于yourTimeInterval参数,如果我想在图像切换之间留出一秒钟,我会只输入1,还是必须为NSTimeInterval类型,正如它在API中所说的那样?NSTimeInterval只是一个double,因此您可以在其中传递1.0或任何值。好吧,假设我不想执行特定的方法,因为我希望能够在几种情况下使用它,所以我只希望它激发并不执行任何操作,然后在一两秒钟后运行下一行代码。我该怎么做呢?或者它是否安排事件发生,然后继续执行其余的代码,而不是等待实际的第二秒来执行闪烁?