在ios中旋转一行



我用线条画了一个加号。现在我想旋转这些线,让它看起来像一个X符号。我试着旋转这些线,但是没有用。

 self.shapeLayer1.transform = CATransform3DMakeRotation( (CGFloat) (GLKMathDegreesToRadians(-45)),0, 0, 0)


 self.shapeLayer2.transform = CATransform3DMakeRotation( (CGFloat) (GLKMathDegreesToRadians(-45)), 0, 0, 0)

你们可以看到,我把0放在x, y, z的位置!!我尝试不同的值。但是不能得到实际的旋转。如果有人有任何想法,请与我分享。有时这些线移动到另一点并旋转。

看起来x,y,z参数定义了旋转轴。因为我们想绕着xy旋转,你的旋转轴应该是z轴,或者0,0,1。

self.shapeLayer1.transform = CATransform3DMakeRotation( (CGFloat) (GLKMathDegreesToRadians(45)),0, 0, 1)
self.shapeLayer2.transform = CATransform3DMakeRotation( (CGFloat) (GLKMathDegreesToRadians(-45)), 0, 0, 1)

关于围绕非中心点旋转的问题,如果您无法重新绘制以0,0,0为中心的线,您也可以使用以下代码将其转换为0,0,0,旋转,然后将其转换回您需要的位置:

CGFloat tx = 1.0,ty = 2.0,tz = 0;  // Modify these to the values you need
CATransform3D t = CATransform3DMakeTranslation (tx, ty, tz);
t = CATransform3DRotate(t,(CGFloat) (GLKMathDegreesToRadians(45)),0, 0, 1);
self.shapeLayer1.transform = CATransform3DTranslate(t,-tx,-ty,-tz);
CATransform3D t = CATransform3DMakeTranslation (tx, ty, tz);
t = CATransform3DRotate(t,(CGFloat) (GLKMathDegreesToRadians(-45)),0, 0, 1);
self.shapeLayer2.transform = CATransform3DTranslate(t,-tx,-ty,-tz);

最新更新