Я пытаюсь реализовать график, который рисует uiview. Существует 3 UIViews для анимации левого/правого слайда. Проблема в том, что я не могу отменить анимацию UIView. Поэтому я заменил UIViews на CALayer. Теперь вопрос в том, подходит ли CALayer для этого? Нормально ли рисовать на CALayer, как это? И почему CALayer так медленно, когда я управляю свойствами фрейма.Рисование и анимация с UIView или CALayer?
CGRect frame = curve.frame;
frame.origin.x -= diffX;
[curve setFrame:frame];
Есть ли альтернатива?
P.S. Я немецкий парень. Извините за ошибки.
Я получил анимацию с 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), но когда анимация заканчивается слой восходит к началу х (например, х = 100). Это нормально? Как я могу решить эту проблему, что конечная позиция больше не меняется? Я попытался изменить свойство removeOnComplete, но это не повлияло.
Надежды на помощь.
Markus