在UIImageView中向上和向下移动UIImage(像hover)循环

你好,我有一个图像,我想上下移动(向上10像素和向下10像素),使我的形象似乎徘徊。 我怎样才能做到这一点与简单的animation非常感谢!

你可以使用Core Animation来animation视图图层的位置。 如果将animationconfiguration为additive ,则不必费心计算新的绝对位置,只需更改(相对位置)即可。

 CABasicAnimation *hover = [CABasicAnimation animationWithKeyPath:@"position"]; hover.additive = YES; // fromValue and toValue will be relative instead of absolute values hover.fromValue = [NSValue valueWithCGPoint:CGPointZero]; hover.toValue = [NSValue valueWithCGPoint:CGPointMake(0.0, -10.0)]; // y increases downwards on iOS hover.autoreverses = YES; // Animate back to normal afterwards hover.duration = 0.2; // The duration for one part of the animation (0.2 up and 0.2 down) hover.repeatCount = INFINITY; // The number of times the animation should repeat [myView.layer addAnimation:hover forKey:@"myHoverAnimation"]; 

由于这是使用核心animation,您将需要将QuartzCore.framework和#import <QuartzCore/QuartzCore.h>到您的代码中。

对于Swift 3和Swift 4:

 let hover = CABasicAnimation(keyPath: "position") hover.isAdditive = true hover.fromValue = NSValue(cgPoint: CGPoint.zero) hover.toValue = NSValue(cgPoint: CGPoint(x: 0.0, y: 100.0)) hover.autoreverses = true hover.duration = 2 hover.repeatCount = Float.infinity myView.layer.add(hover, forKey: "myHoverAnimation") 

尝试这个:

 CGRect frm_up = imageView.frame; frm_up.origin.y -= 10; [UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeats animations:^{ imageView.frame = frm_up; } completion:NULL ]; 

对于这样的任务,最好将图像放在UIView的子图层中,然后对该子图层进行animation处理。 本教程可以给你一些想法: http : //www.raywenderlich.com/2502/introduction-to-calayers-tutorial