Ios 在UIImageView Up&;中设置UIImage动画;向下(就像它在盘旋)循环

Ios 在UIImageView Up&;中设置UIImage动画;向下(就像它在盘旋)循环,ios,animation,uiimageview,core-animation,ios6,Ios,Animation,Uiimageview,Core Animation,Ios6,您好,我有一个图像,我想向上和向下移动(向上10像素和向下10像素),使我的图像似乎是悬停。我怎样才能用简单的动画做到这一点,非常感谢 对于此类任务,最好将图像放置在UIView的子层中,然后设置该子层帧的动画。本教程可能会给你一些想法:试试这个: CGRect frm_up = imageView.frame; frm_up.origin.y -= 10; [UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnim

您好,我有一个图像,我想向上和向下移动(向上10像素和向下10像素),使我的图像似乎是悬停。我怎样才能用简单的动画做到这一点,非常感谢

对于此类任务,最好将图像放置在
UIView
的子层中,然后设置该子层帧的动画。本教程可能会给你一些想法:

试试这个:

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
];

可以使用核心动画为视图层的位置设置动画。如果将动画配置为加法,则无需计算新的绝对位置,只需更改(相对位置)


由于这是使用核心动画,您需要将QuartzCore.framework和
#import
添加到您的代码中。

对于Swift 3、Swift 4和Swift 5:

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")

真是太棒了!唯一的问题是它向上和向左移动。对角线好像是0,0的标记。@Year3000怎么样?1.我对帧的X方向没有做任何改变。2.我唯一更改的是y位置,但是它应该是自动反转的(请参见方法调用的
options
参数)。我肯定你错过了什么。我猜这很奇怪。我的帧是(86、198、132、217)&我使用的是您推荐的帧,就像imageView的中心指向0、0。如何从上到下旋转图像链接到的教程没有解释如何制作动画。层上的操作会自动设置动画。是的,如果它们是独立的层,它们会有隐式的动画,但是这些层不会重新设置动画等等。哦,伙计,这样做效果更好!这不仅更容易理解,而且我还可以尝试不同的有意义的价值观!谢谢!!!
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")