我有使用线条绘制的加号。现在我想旋转这些线条,使它看起来像一个X标志。我试过旋转线但没办法。
self.shapeLayer1.transform = CATransform3DMakeRotation( (CGFloat) (GLKMathDegreesToRadians(-45)),0, 0, 0)
self.shapeLayer2.transform = CATransform3DMakeRotation( (CGFloat) (GLKMathDegreesToRadians(-45)), 0, 0, 0)
你们可以看到,我把零放在x,y,z位置。!!我尝试不同的值。但是colud没有得到实际的旋转。如果有人有任何想法,请与我分享。有时线条移动到另一个点并旋转。
答案 0 :(得分:1)
看起来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);