如何在一个选定点上旋转CALayer。如何在一个点上旋转CALayer
18
A
回答
34
CATransform3D transform = CATransform3DIdentity;
transform = CATransform3DTranslate(transform, rotationPoint.x-center.x, rotationPoint.y-center.y, 0.0);
transform = CATransform3DRotate(transform, rotationAngle, 0.0, 0.0, -1.0);
transform = CATransform3DTranslate(transform, center.x-rotationPoint.x, center.y-rotationPoint.y, 0.0);
哪里center
是您层的中心,rotationAngle
是弧度(正面是逆时针),并且rotationPoint
是点你想旋转。 center
和rotationPoint
位于包含视图的坐标空间中。
1
2
- 定义要旋转你的子层;
- 设置它的
bounds
,position
在超级层和anchorPoint
。anchorPoint
有相对坐标并且指向anchorPoint
。您的子图层将围绕此旋转anchorPoint
; - 添加转换。
例如,为了对围绕子层的底部中心它的父顶部中心点旋转的子层,使用以下代码:
// 1
let rect = CGRect(x: 0,
y: 0,
width: 20,
height: 20)
let path = UIBezierPath(rect: rect)
let sublayer = CAShapeLayer()
sublayer.fillColor = UIColor.green.cgColor
sublayer.path = path.cgPath
superlayer.addSublayer(sublayer)
// 2
sublayer.bounds = rect
sublayer.position = CGPoint(x: superlayer.bounds.size.width/2, y: 0)
sublayer.anchorPoint = CGPoint(x: 0.5, y: 1)
// 3
let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
rotationAnimation.toValue = 2*CGFloat.pi
rotationAnimation.duration = 3
rotationAnimation.fillMode = kCAFillModeForwards
rotationAnimation.isRemovedOnCompletion = false
sublayer.add(rotationAnimation, forKey: nil)
相关问题
- 1. CALayer的重绘上旋转
- 2. 如何在当前位置旋转CALayer?
- 3. 旋转CALayer 90度?
- 4. 如何在旋转后找到图像上的一个点?
- 5. 如何在中心点上旋转一个android图标?
- 6. 如何让相机在一个点上旋转?
- 7. CALayer围绕中心旋转
- 8. 旋转NSImageView的CALayer 90度
- 9. 如何转换(旋转)已存在的CALayer /动画?
- 10. OpenGL旋转一个点
- 11. 围绕一个点旋转
- 12. 围绕另一点旋转一个点
- 13. 在图像上设置一个点作为旋转点Pygame.transform.rotate()
- 14. 如何计算旋转轴上的点?
- 15. 如何跟踪旋转MovieClip上的点?
- 16. 在HTML画布中旋转一个点
- 17. 如何在任何角度旋转一个点?
- 18. 如何永久性地让CALayer在最终位置旋转?
- 19. 如何将一个精灵旋转到一个点?
- 20. 如何旋转一个UIView来面对一个点
- 21. 强制CALayer的旋转方向?
- 22. 旋转UIView,包括CALayer界限和CALayer框架
- 23. 在一个方向上旋转矩阵
- 24. 2D阵列旋转和旋转vb.net中的一个点
- 25. 飞机上的旋转点
- 26. 如何旋转CALayer支持的NSView子类
- 27. 如何拖动旋转和缩放的CALayer?
- 28. 如何旋转UIView,UIImageView或CALayer动画360˚?
- 29. 旋转90度后,如何将图像添加到CALayer背面?
- 30. 仅围绕一个轴旋转节点
感谢warrenm其工作....... – 2010-10-14 11:37:37
你救了我的日子!谢谢!! – 2013-04-26 21:29:28