我正在尝试循环四张亮度稍高的图像,我试图让它看起来像是在发光,但是我认为代码并没有像我想象的那样工作
-(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;
}谢谢!
发布于 2012-11-20 15:25:53
也许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-20 14:57:27
你不需要有四个图像。您可以拥有更多亮度的单个图像,您可以使用以下代码来创建闪烁动画。
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-20 15:13:36
只需添加以下代码
- (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"];
}https://stackoverflow.com/questions/13467843
复制相似问题