不断改变UIView背景色

时间:2011-09-09 06:43:11

标签: iphone

我是iphone dev的新手,在阅读Apress.Beginning.Iphone4.Dev的过程中,不知道这是否是开发iphone应用程序的最佳方式。     好吧,我目前在第4章,我已经完成了示例代码的实现,但我想添加一点mod。

  • 按钮名为disco
  • 如果按下,Touch Up Inside,将开始更改 self.view.backgroundColor随机值100次 在for循环中。

    我的问题是只有在IBAction连接到按钮后才会改变背景 迪斯科,完成,所以我只能看到一个颜色变化而不是至少2个颜色变化。

我的怀疑是,在IBAction完成之前,视图没有刷新/重新加载,这种怀疑是否正确?

是否可以实现我希望实现的功能, - 触摸按钮 - 背景颜色随机变化100次。

先谢谢你,抱歉这个新问题。 timex88

========================

谢谢大家,感谢您的指示,我得到了这份工作。而不是100次, 我让changeBgColor方法无限期地运行。

我注意到的是,changeBgColor仍在运行,如果我要触摸迪斯科舞厅 再次按钮,正在执行的changeBgColor方法的比率变得更高,有人可以解释原因吗?

再次感谢 timex 88

3 个答案:

答案 0 :(得分:1)

- (IBAction)changeColor:(id)sender
{
  if (_timer == nil)
  {
    _changeColorCount = 0;
    _timer = [NSTimer scheduledTimerWithTimeInterval:0.2 
                                              target:self 
                                            selector:@selector(colorTimerFired) 
                                            userInfo:nil 
                                             repeats:YES];
  }
}

- (void)colorTimerFired
{
    if (_changeColorCount > 100)
    {
        [_timer invalidate];
        _timer = nil;
    }
    else
    {
         [view setBackgroundColor:newRandomColor];
         _changeColorCount++;
    }
}

答案 1 :(得分:0)

您可以更改方法中的颜色&使用NSTimer.set为NSTimer重复调用此方法为YES。然后再次调用您的方法&再次

答案 2 :(得分:0)

在迪斯科按钮上点击代码编写

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 
                                                  target:self 
                                                selector:@selector(changeColor)  
                                                userInfo:nil 
                                                 repeats:YES];

现在制作一个新方法如下, 在int i文件中声明.h并在viewDidLoad中初始化为0。

- (void) changeColor
{
   // code for color change;
   i++;
   if (i==100)
   {
     [timer invalidate];
   }
}