IOS: переместить UIImageView - PullRequest
       6

IOS: переместить UIImageView

0 голосов
/ 10 октября 2011

В моем приложении я хочу переместить небольшой UIImageView внутри .png;это маленькое насекомое, и я хочу симулировать его полет.Например, я хочу, чтобы этот png делал, когда он перемещал перевернутую восьмерку как бесконечный символ ∞

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

Вы можете использовать CoreAnimation.Вы можете создать подкласс вида, создать подпредставление для насекомого, а затем назначить ему анимацию по заданному пути.

Ваш UIImageView может быть анимирован.Если это муха, вы можете сделать несколько кадров для движения крыла:

NSArray *images = [NSArray arrayWithObjects:..., nil];

insect.animationImages = images;
insect.animationDuration = ??;
insect.animationRepeatCount = 0;
[insect startAnimating];

Затем установить начальную рамку для насекомого:

insect.frame = CGRectMake(-120, 310, [[images objectAtIndex:0] size].width, [[images objectAtIndex:0] size].height);

И затем определить путь:

CGMutablePathRef aPath;
CGFloat arcTop = insect.center.y - 50;
aPath = CGPathCreateMutable();

CGPathMoveToPoint(aPath, NULL, insect.center.x, insect.center.y);
CGPathAddCurveToPoint(aPath, NULL, insect.center.x, arcTop, 240, -100, 490, 360);

CAKeyframeAnimation* arcAnimation = [CAKeyframeAnimation animationWithKeyPath: @"position"];
arcAnimation.repeatCount = HUGE_VALF;
[arcAnimation setDuration: 4.5];
[arcAnimation setAutoreverses: NO];
arcAnimation.removedOnCompletion = NO;
arcAnimation.fillMode = kCAFillModeBoth; 
[arcAnimation setPath: aPath];
CFRelease(aPath);
[insect.layer addAnimation: arcAnimation forKey: @"position"];

Я оставляю вам путь бесконечного цикла до вас:)

Надеюсь, это поможет!

0 голосов
/ 10 октября 2011

Обычно, если вы хотите что-то передвигать, я бы предложил использовать [UIView animate ...].Тем не менее, вы хотите что-то двигаться по сложной, извилистой дороге.Поэтому вместо этого я бы предложил составить уравнение, которое дает (x, y) для насекомого как функцию времени, а затем запустить NSTimer с довольно небольшим интервалом времени, и каждый раз, когда вы получаете обновление, перемещайтенасекомое (возможно, с помощью [UIView animate ...]).

Другой способ - использовать двумерную анимационную среду, такую ​​как cocos2d, - тогда вы можете получить вызов update, связанный счастота обновления кадра, внутри которой вы обновляете положение своего насекомого, используя то же уравнение, что и выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...