Die Position eines UIView
kann offensichtlich durch view.center
oder view.frame
usw., aber dies gibt nur die Position des UIView
in Bezug auf seine unmittelbare Übersicht zurück.
Ich muss die Position des UIView
im gesamten 320x480-Koordinatensystem bestimmen. Wenn sich das UIView
beispielsweise in einem UITableViewCell
befindet, kann sich seine Position innerhalb des Fensters ungeachtet der Übersicht dramatisch ändern.
Irgendwelche Ideen, ob und wie dies möglich ist?
Prost :)
Das ist ganz einfach:
[aView convertPoint:localPosition toView:nil];
... konvertiert einen Punkt im lokalen Koordinatenraum in Fensterkoordinaten. Mit dieser Methode können Sie den Ursprung einer Ansicht im folgenden Fensterbereich berechnen:
[aView.superview convertPoint:aView.frame.Origin toView:nil];
2014 Edit: Angesichts der Popularität von Matt__Cs Kommentar erscheint es vernünftig, darauf hinzuweisen, dass die Koordinaten ...
Swift 4:
let globalPoint = aView.superview?.convert(aView.frame.Origin, to: nil)
In Swift:
let globalPoint = aView.superview?.convertPoint(aView.frame.Origin, toView: nil)
Swift 3 mit Erweiterung:
extension UIView{
var globalPoint :CGPoint? {
return self.superview?.convert(self.frame.Origin, to: nil)
}
var globalFrame :CGRect? {
return self.superview?.convert(self.frame, to: nil)
}
}
Hier ist eine Kombination aus der Antwort von @Mohsenasm und einem Kommentar von @Chigo, der für Swift übernommen wurde
extension UIView {
var globalFrame: CGRect? {
let rootView = UIApplication.shared.keyWindow?.rootViewController?.view
return self.superview?.convert(self.frame, to: rootView)
}
}