How to “rotate” a layer/view (e.g. just like you w

2020-05-23 12:03发布

问题:

I know how to move a layer based on touch. But I would also like to be able to rotate the image.

Is there any sample code that shows how to do this? Or can anyone give me some advice?

Thanks!

回答1:

The simplest way to do this is using the layer's transform property:

float   angle = M_PI;  //rotate 180°, or 1 π radians
layer.transform = CATransform3DMakeRotation(angle, 0, 0.0, 1.0);

The first argument to the CATransform3DMakeRotation function is the amount to rotate, in radians. The next three describe the vector around which to rotate. This is describing a vector in the z-axis, so effectively perpendicular to the screen. This will rotate the layer so it's upside down.



回答2:

I ended up doing it like this:

CGAffineTransform transform = CGAffineTransformMakeRotation(angle);
[[self viewWithTag:999] setTransform:transform];

Note that the angle is in radians.



回答3:

You would use the view's transform property. There's some example code for rotating the view in the iPhone OS Programming Guide, under Launching in Landscape Mode



回答4:

You should look at Apple's MoveMe example for how to move around a layer based on touch. It also applies some scaling transforms as you do it, so that should serve as a reasonable example of to apply rotation transforms.