我正在尝试使用UIImage
作为一个按钮,让人觉得它会在大约半秒内打开然后再关闭。如果我打开它,这可以正常工作,但如果我想再次关闭它,它根本不会打开。我有一个短循环,以防止它打开和关闭如此之快,我看不到它,但它根本没有打开。我曾经和[flashingButton release]
一起尝试过。我有什么误解吗?我可以同时addSubview
和removeFromSuperView
进行短暂的延迟吗?
if ( some conditional statements in here .......) {
UIImage *estimateButton1 = [UIImage imageNamed:@"FlashingButton.png"];
flashingButton = [[UIImageView alloc] initWithImage:flashingButton1];
flashingButton.frame = CGRectMake (146,8,165,30);
[self.view addSubview:flashingButton];
// [flashingButton release];
// short loop in here to delay urning the button off
[self.flashingButton removeFromSuperview];
答案 0 :(得分:3)
用户界面绘图直到主运行循环的后期才会发生。您拨打addSubview
的电话会将flashingButton
添加到self.view
,但不会将其绘制。您的短循环阻止主运行循环,因此它仍然无法到达绘图部分。然后,在主运行循环绘制它之前删除按钮。
解决方案是在添加闪烁按钮后让主运行循环继续(因此它将被绘制),但是创建一个将在以后删除该按钮的计时器。您可以使用performSelector:withObject:afterDelay:
执行此操作。
[self.flashingButton performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.5f];
您可以在“Threading Programming Guide”中了解有关运行循环的信息,以及如何在“View Programming Guide for iOS”中完成绘图。
答案 1 :(得分:0)
在主线程内循环将暂时挂起程序并防止任何绘图发生。相反,请使用NSTimer
。