2013-06-28 3 views
0

Я вращая UIImageView с помощью следующего кода:Core Animation setFromValue

CABasicAnimation *rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
[rotate setFromValue:[NSNumber numberWithFloat:0.0]]; 
[rotate setToValue:[NSNumber numberWithFloat:-0.34906585)]]; 
[rotate setDuration:0.8]; 
[rotate setTimingFunction:[CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut]]; 
rotate.removedOnCompletion = NO; 
rotate.fillMode = kCAFillModeForwards; 
[myUIImageView.layer addAnimation:rotate forKey:@"dangleMyDial"]; 

Но каждый раз, когда я называю эту функцию она начала поворота изображения из исходного положения. Что я должен использовать для [rotate setFromValue:]; чтобы он вращался с того места, где он сейчас находится? есть ли какое-либо свойство, показывающее текущий угол?

(0,34906585 Rad равно 20Deg)

+0

что происходит, когда вы просто раскомментировать 'setFromValue' и использовать' byValue' вместо 'toValue'? – Danilo

+0

Я пробовал то же самое. он начнется с исходного положения (aka 0deg) – Mojtaba

+0

Не могли бы вы отслеживать количество поворотов, которое вы уже сделали с переменной? – Danilo

ответ

1
CATransform3D transform = ((CALayer *) self.myUIImageView.layer.presentationLayer).transform; 
CGFloat startAngle = atan2(transform.m12, transform.m11); 

CABasicAnimation *rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
[rotate setFromValue:[NSNumber numberWithFloat:startAngle]]; 
[rotate setByValue:[NSNumber numberWithFloat:-20 * M_PI/180]]; 

// ...