How to “rotate” a layer/view (e.g. just like you would in enigmo)

前端 未结 4 1240
栀梦
栀梦 2021-02-04 11:54

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

相关标签:
4条回答
  • 2021-02-04 12:15

    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.

    0 讨论(0)
  • 2021-02-04 12:26

    I ended up doing it like this:

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

    Note that the angle is in radians.

    0 讨论(0)
  • 2021-02-04 12:33

    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

    0 讨论(0)
  • 2021-02-04 12:40

    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.

    0 讨论(0)
提交回复
热议问题