nstimer调光按钮

时间:2012-11-20 06:40:27

标签: iphone ios xcode uibutton nstimer

我试图循环四个亮度略高的图像,我试图让它看起来像是在发光,但是我不认为代码是按照我认为的那样工作

  -(void)loadRefreshButton{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    refreshButton = button;
    [button addTarget:self
               action:@selector(refreshButtonPressedResult)
     forControlEvents:UIControlEventTouchDown];    [refreshButton setTitle:@"" forState:UIControlStateNormal];
    refreshButton.frame = CGRectMake(80.0, 370.0, 76, 76);
    [self.view addSubview:refreshButton];
    NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval: 1.0
                                                      target: self
                                                    selector: @selector(toggleButtonImage:)
                                                    userInfo: nil
                                                     repeats: YES];
}


    - (void)toggleButtonImage:(NSTimer*)timer
{


     if(toggle)
        {
        [refreshButton setImage:[UIImage imageNamed:@"button_zero.png"] forState: UIControlStateNormal];
        [refreshButton setImage:[UIImage imageNamed:@"button_one.png"] forState: UIControlStateNormal];
        [refreshButton setImage:[UIImage imageNamed:@"button_two.png"] forState: UIControlStateNormal];
        [refreshButton setImage:[UIImage imageNamed:@"button_three.png"] forState: UIControlStateNormal];
        }
    else
        {
        [refreshButton setImage:[UIImage imageNamed:@"button_three.png"] forState: UIControlStateNormal];
        [refreshButton setImage:[UIImage imageNamed:@"button_two.png"] forState: UIControlStateNormal];
        [refreshButton setImage:[UIImage imageNamed:@"button_one.png"] forState: UIControlStateNormal];
        [refreshButton setImage:[UIImage imageNamed:@"button_zero.png"] forState: UIControlStateNormal];
        }
    toggle = !toggle;
}

谢谢!

3 个答案:

答案 0 :(得分:1)

也许UIView类方法animateWithDuration将达到预期的效果。这很简单:

[UIView animateWithDuration:0.5
                      delay:0.0
                    options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction
                 animations:^{
                     refreshButton.alpha = 0.75;
                 }
                 completion:nil];

显然,相应地调整durationalpha以达到预期的效果。

答案 1 :(得分:0)

您不需要有四张图片。您可以拥有更加明亮的单个图像,并且可以使用以下代码来闪烁动画。

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
    [animation setFromValue:[NSNumber numberWithFloat:1.0]];
    [animation setToValue:[NSNumber numberWithFloat:0.3]];
    [animation setDuration:0.8f];
    [animation setTimingFunction:[CAMediaTimingFunction
                                  functionWithName:kCAMediaTimingFunctionLinear]];
    [animation setAutoreverses:YES];
    [animation setRepeatCount:INFINITY];
    [[aButton layer] addAnimation:animation forKey:@"opacity"];

答案 2 :(得分:0)

只需添加此代码

- (void)toggleButtonImage:(NSTimer*)timer
{
        ///write your code above which define above after at last just add this code..
        CATransition *animation = [CATransition animation];
        [animation setDelegate:self];   
        [animation setType:kCATransitionFade];
        [animation setDuration:0.5];
        [animation setTimingFunction:[CAMediaTimingFunction functionWithName:
                                      kCAMediaTimingFunctionEaseInEaseOut]];
        [[refreshButton layer] addAnimation:animation forKey:@"transitionViewAnimation"];
}