Gibt es eine Möglichkeit, UIKit-Koordinaten (0,0 oben links) in Quartz/CoreImage (0,0 unten links) zu konvertieren? Ich kann hier nichts finden, was so schnell ist.UIKit-Koordinaten in Quartz/Core konvertierenImage (Swift)
0
A
Antwort
2
Sie affine Transformationsmatrix verwenden, dies snipped von einem Code von mir gemacht wird Core Image/Core-Grafiken zu UIKit konvertieren von:
CGAffineTransform t = CGAffineTransformMakeScale(1, -1);
t = CGAffineTransformTranslate(t,0, -imageView.bounds.size.height);
Grundsätzlich müssen Sie:
- Annulliere die y-Achse
- übersetzen Ursprung der Ansicht Höhe
Nach dem Sie diese geometrischen Funktionen verwenden können, um rect oder Punkte
CGPoint pointUIKit = CGPointApplyAffineTransform(pointCI, t);
CGRect rectUIKit = CGRectApplyAffineTransform(rectCI, t);
In Swift 3.x zu berechnen:
var t = CGAffineTransform(scaleX: 1, y: -1)
t = t.translatedBy(CGAffineTransform(translationX: 0, y: -imageView.bounds.size.hieght)
let pointUIKit = CGPointApplyAffineTransform(pointCI, t)
let rectUIKIT = CGRectApplyAffineTransform(rectCI, t)
1
mit dem Ursprung in dem Boden links gegen die oben links, müssen Sie nichts mit der X-Achse tun, aber Sie müssen die richtige Achse kippen. UIKit (oder in diesem Fall Core Graphics) verwendet CGPoints. Core Image verwendet normalerweise CIVectors, die 2, 3 oder 4 Achsenwinkel haben können.
Hier ist eine einfache Funktion, die eine CGPoint (X, Y) in eine civector (X, Y) drehen wird:
func createVector(_ point:CGPoint, image:CIImage) -> CIVector {
return CIVector(x: point.x, y: image.extent.height - point.y)
}
Verwandte Themen
- 1. QuartzCore - Absturz in iOS8
- 2. QuartzCore/CAMetalLayer.h Datei nicht gefunden
- 3. QuartzCore Leistung auf clear UIView
- 4. Die Grenze mit QuartzCore ist langsam?
- 5. Benutzerdefinierte Kartenansicht Absturz in InitWithCoder in Swift
- 6. Wie kann ich einen EXC_BAD_ACCESS Absturz in QuartzCore CALayerGetLayer auf iOS 9.3.1 beheben?
- 7. CDPieMenu (Cocoapod) in Swift
- 8. Swift Specialized Absturz auf UICollectionView cellForItemAtIndexPath
- 9. Die Funktion Zeilenzählung funktioniert nicht mehr in Swift 3.0
- 10. Wie kommt es, dass Xcode nicht automatisch mit QuartzCore verknüpft, wenn das Projekt es verwendet?
- 11. Wie füge ich einen Sublayer in swift ein?
- 12. Zugriff auf private iOS-APIs in Swift?
- 13. @IBDesignable nicht in iOS arbeiten swift 3
- 14. Probieren Crash zu beheben: QuartzCore - CA :: release_objects (X :: Liste <void const*> *)
- 15. "Diese Anwendung ändert die Auto-Layout Engine" -Fehler (Swift iOS)
- 16. in Swift
- 17. in Swift
- 18. In Swift
- 19. import swift verknüpfte objc klasse in swift
- 20. Swift Toast funktioniert nicht in Swift 3
- 21. Completion Handler in Swift
- 22. Identität Operatoren in Swift
- 23. zu unsigned in Swift
- 24. Priority Queue in swift
- 25. Swift Schließung in Protokollerweiterung
- 26. typedef enum in swift
- 27. UIBezierPath in Swift archivieren
- 28. NSMutableArray in NSMutableArray Swift
- 29. Fehlerbehandlung in Swift 3
- 30. Hashable Enum in Swift
Ja, wie dfd sagt. Der einzige Unterschied zwischen den Koordinatenwerten ist die Höhe der Ansicht in der y-Achse. – Magnas