我试图循环四个亮度略高的图像,我试图让它看起来像是在发光,但是我不认为代码是按照我认为的那样工作
-(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;
}
谢谢!
答案 0 :(得分:1)
也许UIView
类方法animateWithDuration
将达到预期的效果。这很简单:
[UIView animateWithDuration:0.5
delay:0.0
options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction
animations:^{
refreshButton.alpha = 0.75;
}
completion:nil];
显然,相应地调整duration
和alpha
以达到预期的效果。
答案 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"];
}