Я подхожу к основной анимации и рисованию опытным путем. Я пытаюсь оживить простую фигуру; рассматриваемая форма образована 3 линиями плюс кривая Безье. Также нарисована красная линия, чтобы показать контрольные точки кривой.
http://img.skitch.com/20091119-1ufar435jdq7nwh8pid5cb6kmm.jpg
Мой основной контроллер просто добавляет это подпредставление и вызывает метод adjustWave
всякий раз, когда touchesEnd
. Вот код для моего класса рисования фигур. Как видите, у класса есть одно свойство, cp1x (x контрольной точки Безье 1). Это значение, которое я хотел бы оживить. Учти, это тупая попытка ...
- (void)drawRect:(CGRect)rect {
float cp1y = 230.0f;
float cp2x = 100.0f;
float cp2y = 120.0f;
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextClearRect(ctx, rect);
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 10.0f, 200.0f);
CGPathAddCurveToPoint (path, NULL, cp1x, cp1y, cp2x, cp2y, 300.0f, 200.0f);
CGPathAddLineToPoint(path, NULL, 300.0f, 300.0f);
CGPathAddLineToPoint(path, NULL, 10.0f, 300.0f);
CGPathCloseSubpath(path);
CGContextSetFillColorWithColor(ctx, [UIColor blueColor].CGColor);
CGContextAddPath(ctx, path);
CGContextFillPath(ctx);
// Drawing a line from control points 1 and 2
CGContextBeginPath(ctx);
CGContextSetRGBStrokeColor(ctx,1,0,0,1);
CGMutablePathRef cp1 = CGPathCreateMutable();
CGPathMoveToPoint(cp1, NULL, cp1x, cp1y);
CGPathAddLineToPoint(cp1, NULL, cp2x, cp2y);
CGPathCloseSubpath(cp1);
CGContextAddPath(ctx, cp1);
CGContextStrokePath(ctx);
}
- (void)adjustWave {
[UIView beginAnimations:@"movement" context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationWillStartSelector:@selector(didStart:context:)];
[UIView setAnimationDidStopSelector:@selector(didStop:finished:context:)];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:3.0f];
[UIView setAnimationRepeatCount:3];
[UIView setAnimationRepeatAutoreverses:YES];
cp1x = cp1x + 20.0f;
[UIView commitAnimations];
}
Форма не меняется. Если, наоборот, я извлеку код CA и добавлю простой `[self setNeedsDisplay] в последнем методе, форма изменится, но, очевидно, без CA. Вы можете помочь нам? Я уверен, что совершаю здесь очень серьезную ошибку ... Заранее спасибо, Давиде.