UIView анимация по круглой дорожке? - PullRequest
4 голосов
/ 31 марта 2010

Мне нужно, чтобы мой маленький парень (в UIIamgeView) прыгнул вперед, и это должно выглядеть естественно. Я хочу знать, есть ли способ сделать это с CoreAnimation (beginAnimation / commitAnimation)?

Я мог бы сделать это, установив точку в воздухе, но движение выглядит неестественно: P

Ответы [ 3 ]

14 голосов
/ 28 мая 2013

Читая пост Брэда Ларсона, я получил красивую функцию, позволяющую моему изображению следовать по кругу.

Вам необходимо импортировать платформу QuartzCore: #import

Вот код:

// Set up path movement
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;
pathAnimation.repeatCount = INFINITY;
//pathAnimation.rotationMode = @"auto";
pathAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
pathAnimation.duration = 5.0;

// Create a circle path
CGMutablePathRef curvedPath = CGPathCreateMutable();
CGRect circleContainer = CGRectMake(0, 0, 400, 400); // create a circle from this square, it could be the frame of an UIView
CGPathAddEllipseInRect(curvedPath, NULL, circleContainer);

pathAnimation.path = curvedPath;
CGPathRelease(curvedPath);

[self.imageView.layer addAnimation:pathAnimation forKey:@"myCircleAnimation"];
3 голосов
/ 01 апреля 2010

Чтобы продолжить ответ Оле, мой ответ на этот вопрос предоставляет код для выполнения такой изогнутой анимации с использованием CAKeyframeAnimation.

3 голосов
/ 31 марта 2010

Создайте CAKeyframeAnimation и назначьте CGPath его свойству path.

...