0

次のコードで UIImageView を回転させています。

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 に等しい)

4

1 に答える 1

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]];

// ...
于 2013-06-28T00:54:46.157 に答える