10

こんにちは、画像がホバリングしているように見えるように、上下に移動したい画像があります (上に 10 ピクセル、下に 10 ピクセル)。どうすれば簡単なアニメーションでこれを行うことができますか ありがとう!!!

4

4 に答える 4

25

Core Animation を使用して、ビュー レイヤーの位置をアニメーション化できます。アニメーションを次のように構成すると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"];

これは Core Animation を使用しているため、QuartzCore.framework をコードに追加する必要があり#import <QuartzCore/QuartzCore.h>ます。

于 2012-10-14T14:08:30.233 に答える
9

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")
于 2016-07-29T16:53:53.807 に答える
5

これを試して:

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
];
于 2012-10-14T10:10:22.260 に答える
0

このようなタスクでは、画像を のサブレイヤーに配置してからUIView、そのサブレイヤー フレームをアニメーション化する方が適切です。このチュートリアルでは、いくつかのアイデアを得ることができます: http://www.raywenderlich.com/2502/introduction-to-calayers-tutorial

于 2012-10-14T10:06:11.460 に答える