wie CALayer an einem ausgewählten Punkt zu drehen.drehen, wie in einem Punkt CALayer
Antwort
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);
Wo center
das Zentrum Ihrer Schicht ist, rotationAngle
in Radian ist (positiv gegen den Uhrzeigersinn), und rotationPoint
ist die Punkt, über den Sie drehen möchten. center
und rotationPoint
befinden sich im Koordinatenraum der enthaltenden Ansicht.
Schauen Sie sich die CA Dokumentation here.
Sie wollen zum Beispiel die Transformation zu einem CATransform3DRotate, setzen:
CATransform3D current = myLayer.transform;
myLayer.transform = CATransform3DRotate(current, DEGREES_TO_RADIANS(20), 0, 1.0, 0);
Dies wird nur zum Drehen der Schicht über sein aktuelles Zentrum genügen, nicht willkürlich Punkt. – warrenm
- Definieren Sie Ihre Unterschicht, die Sie drehen möchten;
- Legen Sie seine
bounds
,position
in Superlayer undanchorPoint
.anchorPoint
hat relative Koordinaten und zeigt auf einanchorPoint
. Ihre Sublayer wird sich um dieseanchorPoint
drehen; - hinzufügen Transformation.
Um zum Beispiel eine Unterschicht auf seiner Super oberen Mittelpunkt um Unterschicht der untere Mitte zu drehen, verwenden Sie diesen Code:
// 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. iPhone: CALayer + in 3D + Antialias drehen?
- 2. Drehen einer Kugel von Punkt zu Punkt
- 3. Drehen Sie einen Punkt um einen anderen Punkt in 2D
- 4. UIScrollView in einem CALayer
- 5. Rechteck um einen Punkt drehen
- 6. Punkt um einen anderen Punkt in Grad drehen python
- 7. Einen CALayer mit einem anderen CALayer maskieren
- 8. Wie transformiert man einen CALayer?
- 9. Drehen Osmdroid Karte um beliebigen Punkt
- 10. So drehen Sie einen Punkt mit transformers.py
- 11. CCSprite um einen bestimmten Punkt drehen?
- 12. Ein div um einen Punkt drehen
- 13. Drehen Sie Graphics2d um bestimmten Punkt
- 14. So drehen Sie eine CALayer-unterstützte NSView-Unterklasse
- 15. Wie kann ich ein Bild zuverlässig um einen Punkt drehen?
- 16. Wie bekomme ich Berührungsereignisse auf einem CALayer?
- 17. Punkt-zu-Punkt-Pfad in einem Graphen
- 18. Bild mit Touch drehen, um Punkt in Android
- 19. CALayer Hindernisse?
- 20. Bilder in Javascript drehen
- 21. Spin Text Elemente um Punkt ohne zu drehen
- 22. Wie zeichne ich radiale Gradienten in einem CALayer?
- 23. Java: Punkt um einen anderen um den angegebenen Grad drehen
- 24. Nächster Punkt zu einem bestimmten Punkt
- 25. Ereignisse in CALayer
- 26. klickbare CALayer UIs
- 27. CALayer-Koordinatensystem
- 28. Rechteck um Mitte drehen
- 29. Wie bekomme ich den nächsten Punkt zu einem Punkt in einem Punktfeld?
- 30. hinzufügen UIImage in CALayer
Dank Warrenm seine Arbeits ....... –
Sie meine Tage gerettet! Vielen Dank!! –