Анимировать рисование линий в UIView - PullRequest
4 голосов
/ 03 апреля 2011

Кто-нибудь может помочь мне с этой проблемой?У меня есть nsarray линий, и мне нужно написать их одну за другой в некотором UIView (я хочу оживить рисование рук).

Ответы [ 4 ]

6 голосов
/ 18 января 2013

Вот ответ (найден здесь: http://soulwithmobiletechnology.blogspot.fr/2012/07/how-to-animate-line-draw.html)

UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(50.0,0.0)];
[path addLineToPoint:CGPointMake(120.0, 600.0)];

CAShapeLayer *pathLayer = [CAShapeLayer layer];
pathLayer.frame = self.view.bounds;
pathLayer.path = path.CGPath;
pathLayer.strokeColor = [[UIColor redColor] CGColor];
pathLayer.fillColor = nil;
pathLayer.lineWidth = 2.0f;
pathLayer.lineJoin = kCALineJoinBevel;

[self.view.layer addSublayer:pathLayer];

CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
pathAnimation.duration = 2.0;
pathAnimation.fromValue = [NSNumber numberWithFloat:0.0f];
pathAnimation.toValue = [NSNumber numberWithFloat:1.0f];
[pathLayer addAnimation:pathAnimation forKey:@"strokeEnd"];

Не забудьте #import <QuartzCore/QuartzCore.h>.

0 голосов
/ 03 апреля 2011

Некоторые точки входа, которые могут помочь:

0 голосов
/ 03 апреля 2011

этот код анимирует объект по набору точек. можно использовать ту же идею для ваших строк, которые я предполагаю, CGPath?

//
// animate along a set of points
// 
// NSLog(@"The content of movement1PointsArray is%@",movement1PointsArray);     
CGMutablePathRef touchPath1 = CGPathCreateMutable();
CGPoint touchPath1StartPoint = [[movement1PointsArray objectAtIndex:0] CGPointValue];
CGPathMoveToPoint(touchPath1,NULL,touchPath1StartPoint.x, touchPath1StartPoint.y);

for (NSInteger p = 0; p < [movement1PointsArray count]; ++p)
{
    CGPoint touchesPointOnPath = [[movement1PointsArray objectAtIndex:p] CGPointValue];
    CGPathAddLineToPoint(touchPath1, NULL,touchesPointOnPath.x,touchesPointOnPath.y);   
}
CAKeyframeAnimation* touchPathAnimation1 = [CAKeyframeAnimation animationWithKeyPath:@"position"];
[touchPathAnimation1 setDuration: 1.0];
[touchPathAnimation1 setAutoreverses: NO];
touchPathAnimation1.removedOnCompletion = NO;
touchPathAnimation1.fillMode = kCAFillModeForwards;
[touchPathAnimation1 setPath: touchPath1];
CFRelease(touchPath1);
[animationsArray addObject:touchPathAnimation1];
[ball.layer addAnimation: touchPathAnimation1 forKey: @"position"];
  • У меня проблемы с получением второго пути к анимации ... независимо от того, что я пробую, он только оживляет последний путь.
0 голосов
/ 03 апреля 2011

Возможно, вы в конечном итоге реализуете метод drawRect для views.Это http://howtomakeiphoneapps.com/2009/08/how-to-draw-shapes-with-core-graphics/

Должны ли вы начать

...