Я пытаюсь реализовать график, который рисует пользовательский интерфейс.Есть 3 UIViews для анимации левого / правого слайда.Проблема в том, что я не могу отменить анимацию UIView.Поэтому я заменил UIViews на CALayer.Теперь вопрос в том, подходит ли CALayer для этого?Нормально ли рисовать на CALayer, как это?И почему CALayer такой медленный, когда я манипулирую свойствами фрейма.
CGRect frame = curve.frame;
frame.origin.x -= diffX;
[curve setFrame:frame];
Есть ли альтернатива?
PS Я немецкий парень.Извините за ошибки.
Я получил анимацию с помощью CATransaction, но теперь я буду анимировать движение топора с помощью CABasicAnimation.Это не проблема, ожидайте, что положение слоя вернется к предыдущему x.
CABasicAnimation *theAnimation;
theAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
theAnimation.delegate = self;
theAnimation.duration = 1.0;
theAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
CGPoint position = [[curves objectAtIndex:i]position];
position.x = [[curves objectAtIndex:i]position].x - diffX;
[theAnimation setToValue:[NSValue valueWithCGPoint:position]];
[[curves objectAtIndex:i] addAnimation:theAnimation forKey:[NSString stringWithFormat: @"translate.x.%d", index]];
Позиция меняет положение (например, xStart = 100, xEnd = 200), но когда анимация заканчивается, слой выходитвернуться к началу x (например, x = 100).Это нормально?Как я могу решить эту проблему, чтобы конечная позиция больше не менялась?Я попытался изменить свойство removeOnComplete, но это не сработало.
Надеюсь на помощь.
Маркус