闪烁UILabel作为

时间:2010-09-03 15:39:46

标签: iphone objective-c xcode sdk

我正在尝试使用UIImage作为一个按钮,让人觉得它会在大约半秒内打开然后再关闭。如果我打开它,这可以正常工作,但如果我想再次关闭它,它根本不会打开。我有一个短循环,以防止它打开和关闭如此之快,我看不到它,但它根本没有打开。我曾经和[flashingButton release]一起尝试过。我有什么误解吗?我可以同时addSubviewremoveFromSuperView进行短暂的延迟吗?

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];

2 个答案:

答案 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