Ich möchte den Ursprung von scrollView im Fensterkoordinatensystem abrufen. Zum Beispiel ist der scollView-Ursprung gegenwärtig (0,51). Im Fensterkoordinatensystem sollte es jedoch 51 + 44 (Höhe der Navigationsleiste) +20 (Höhe der Statusleiste) = 115 sein. Im Fensterkoordinatensystem sollte scrollView.frame.origin (0,115) sein. Ich habe mit convertPoint versucht: Methoden, aber manchmal (0,51) oder (0,0). Bitte stellen Sie eine Lösung dafür bereit. DankeKonvertieren eines UIView-Ausgangspunkts in sein Fenster-Koordinatensystem
Antwort
Ich versuchte mit TechZen-Lösung, aber ohne Erfolg. Anstatt den Ursprung von scrollView zu konvertieren, habe ich auf die UIWindow-Klassenreferenz von Apple Docs verwiesen und das endCenter der Tastatur in das Koordinatensystem meiner Ansicht konvertiert, indem ich diesen Code [self.view convertPoint:endCentre fromView:[UIApplication sharedApplication].keyWindow]
verwendet habe. Dieses Stück Code hat funktioniert und somit mein Problem gelöst. Allerdings bleibt die Frage, warum es nicht die richtige Koordinate von scrollView.origin.So, im Grunde habe ich einen Workaround durch Konvertieren Tastatur Endcenter statt scrollView.origin. Oh, und ich habe all diese Sachen gemacht, um die neue Höhe meiner scrollView zu berechnen, wenn die Tastatur auf dem Bildschirm erscheint. Also, wenn jemand eine Lösung für dieses Problem oder eine bessere Lösung hat, bitte lassen Sie uns alle wissen.
Es klingt wie Sie nicht zwischen den richtigen Ansichten konvertieren. Ein Rahmen Sicht wird auf die Koordinaten es ist Superview, nicht seine eigenen internen Koordinaten, wenn Sie also die Herkunft der im Hinblick auf die Fensterkoordinaten zu konvertieren versuchten, würden Sie die Superview verwenden müssen:
[[self superview] convertPoint:self.frame.origin toView:theWindow];
jedoch Noch einfacher ist es, den Nullpunkt von der Ansicht selbst in das Fenster zu konvertieren. Die beiden Codeteile sind äquivalent und daher ist es nicht notwendig, den Ursprung überhaupt zu verwenden.
[self convertPoint:CGPointZero toView:theWindow];
I versuchte dieses Code Stück Code in ViewDidLoad Methode, mit Selbst ersetzt durch self.view und theWindow ersetzt durch self.view.window, aber es gibt (0,0) als die Ausgabe – Nishit
Ich würde überprüfen, dass die Fenstereigenschaft der Ansicht ist nicht Null. Es ist oft. – TechZen
Danke für die Antwort. Wie man mit diesem Problem umgeht. Ich habe versucht, self.view.window mit [UIApplication sharedApplication] .keywindow zu ersetzen, aber ohne Erfolg. – Nishit
Beachten Sie, dass diese Funktionen nur funktionieren, nachdem der View-Controller die Subviews beendet hat. Also, wenn Sie wollen, dass, wenn Ansicht Lasten, können Sie viewDidLayoutSubviews/viewDidAppear verwenden, aber nicht in viewDidLoad/viewWillAppear etc ...
Dieser Code funktioniert für mich:
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
CGPoint originInSuperview = [self.view.superview convertPoint:CGPointZero fromView:self.scrollView];
}
Swift 2.1:
In viewDidAppear Ihren Viewcontroller (sonst Elemente noch nicht geschichtet sind):
var yourFrame = yourScrollView.convertRect(yourScrollView.frame, toView: self.view)
//PRINT THE WHOLE RECT
print(yourFrame)
//PRINT A DETAILED VERSION OF THE FRAME, ALSO CAN PERFORM CALCULATION BETWEEN THE RECT PARAMETERS TO GET , FOR EXAMPLE, WIDTH POINT IN THE SUPERVIEW:
print("X: \(yourFrame.origin.x) Y: \(yourFrame.origin.y) WIDTH: \(yourFrame.width) HEIGHT: \(yourFrame.height)")
In Swift 3: var yourFrame = yourScrollView.convertRect (yourScrollView.frame, zu: self.view) – Medhi
- 1. Konvertieren eines Menschen in 3D
- 2. Konvertieren eines Zeichens in keycode
- 3. Konvertieren eines ASTNode in Code
- 4. Konvertieren eines Datenrahmens in xts
- 5. Konvertieren eines WS in WAP
- 6. Konvertieren eines NSObject in NSData
- 7. Konvertieren eines char * in int
- 8. Konvertieren eines NSString * in char?
- 9. Konvertieren eines Bilds in Graustufen
- 10. Konvertieren eines Datums in COBOL
- 11. Konvertieren eines HtmlElement in ein Image?
- 12. Moment/Timezone - Konvertieren eines Datums in Unix
- 13. Konvertieren eines [] Bytes mit Strings in Dezimalwerte
- 14. anzeigen ContextMenu und Konvertieren Sein Screenshot in Bild
- 15. Konvertieren eines Datums in Text in VBA
- 16. Konvertieren eines Int in QBytearray in Qt
- 17. Konvertieren eines XMLDocument in E4X in AS3?
- 18. Konvertieren eines Projekts von C++ in C#
- 19. Kakao - Konvertieren eines Doppel in Zeichenfolge
- 20. Konvertieren eines RGB-Farbwerts in ein Hexadezimal
- 21. Konvertieren eines Objekts in eine Funktion
- 22. Konvertieren eines Stils in ng-Stil
- 23. Konvertieren eines Wörterbuch in eine Liste
- 24. Konvertieren eines IntPtr-Fensterhandles in IWin32Window^
- 25. UserWarning: Konvertieren eines maskierten Elements in nan
- 26. Powershell: Konvertieren eines Objekts in eine Zeichenfolge
- 27. Konvertieren von Inhalt eines ByteArrayInputStream in String
- 28. Konvertieren eines Blobs in ein Bild
- 29. Konvertieren eines Zeichenzeichens in Java KeyEvent KeyCode
- 30. Konvertieren eines time_t in NSDate-Objekts?
Swift Version unten –