Xcode iOS闪烁按钮卡住了

时间:2015-03-30 09:42:21

标签: objective-c

嘿我在我的iOS应用程序中实现了一个按钮闪烁的功能,如果设置了某个参数则停止该功能。我丢失了所有应用程序数据并记录了所有内容,但我正在努力找出我现在遇到的问题。

我的方法如下:

- (void)toggleButtonImage:(NSTimer*)timer
{    
    toggle = !toggle; // is a bool
    for(int x=0;x<9;x++){
        for (int y=0;y<9;y++){
            if(toggle==true){ 
                if (blinks[x][y]==1){ 
                    [buttons[x][y] setBackgroundImage:[UIImage imageNamed:@"loading"] forState: UIControlStateNormal];
                }
            }

            else if (toggle==false) {
                    [buttons[x][y] setBackgroundImage:[UIImage imageNamed:@"newmask"] forState:UIControlStateNormal];
            }
        }
    }
}

所有按钮都在一种表中,方法遍历所有按钮,检查按钮的blinks数组是否设置为1,如果是,则将暗图像设置为背景。在每次运行时,无论blinks说什么,它都会将按钮的图片设置为&#34; newmask&#34;。

因此,如果blinks为1,则按钮始终在&#34; newmask&#34;之间切换。和#34; loading&#34;。

然而,大约50%的按钮卡在loading图片上,以后甚至不会刷新,就像被忽略一样。我确信我在这里错过了一些简单的逻辑,但它可能是什么?再次将blinks设置为1可以让另外50%的机会最终将按钮设置为&#34; newmask&#34;,但是,与往常一样,只有50%的几率将按钮设置为&#34;为newmask&#34;将blinks设置为0后。

1 个答案:

答案 0 :(得分:0)

我认为它与被覆盖的主队列有关。但是,我现在写了这个方法:

- (void)toggleButtonImage:(NSTimer*)timer
{    
    if(go) fl=fl-1;
    else fl++;

    if(fl>4) go=true;
    if(fl<2) go=false;

for(int x=0;x<kButtonColumns;x++){
    for (int y=0;y<kButtonRows;y++){
        if(blinks[x][y]==1)  //  if(toggle)
           {
             [buttons[x][y]  setAlpha:0.2*fl];
        }
        else {
             [buttons[x][y]  setAlpha:1.0];
        }
    }
  }
   toggle = !toggle;
}

我的刷新率为0.08秒,帧速率为12.5fps,这是性能和外观之间的坚实折衷。另外,每次有人按下按钮时,我都会设置方向(bool go)和int fl的起始值,这样用户就能感觉到实际控制动画。

- (void) sete{
    fl=6;
    go=true;
}

- (IBAction)actionPick:(id)sender
{
    [self sete]; 
...