0

我正在尝试循环四个亮度稍高的图像,我试图让它看起来像是在发光,但是我认为代码并没有像我想象的那样工作

  -(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;
}

谢谢!

4

3 回答 3

1

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

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

显然,duration进行alpha相应的调整以达到预期的效果。

于 2012-11-20T07:25:53.017 回答
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"];
于 2012-11-20T06:57:27.113 回答
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"];
}
于 2012-11-20T07:13:36.153 回答