a の位置は明らかにorなどUIView
によって決定できますが、これは直接のスーパービューに関連するの位置のみを返します。view.center
view.frame
UIView
UIView
320x480 座標系全体での位置を決定する必要があります。たとえば、がウィンドウ内の位置UIView
にある場合UITableViewCell
、スーパービューに関係なく劇的に変化する可能性があります。
これが可能かどうか、またどのように可能かについてのアイデアはありますか?
乾杯 :)
a の位置は明らかにorなどUIView
によって決定できますが、これは直接のスーパービューに関連するの位置のみを返します。view.center
view.frame
UIView
UIView
320x480 座標系全体での位置を決定する必要があります。たとえば、がウィンドウ内の位置UIView
にある場合UITableViewCell
、スーパービューに関係なく劇的に変化する可能性があります。
これが可能かどうか、またどのように可能かについてのアイデアはありますか?
乾杯 :)
それは簡単です:
[aView convertPoint:localPosition toView:nil];
... ローカル座標空間のポイントをウィンドウ座標に変換します。このメソッドを使用して、ウィンドウ空間でのビューの原点を次のように計算できます。
[aView.superview convertPoint:aView.frame.origin toView:nil];
2014 編集: Matt__C のコメントの人気を見ると、座標が...
Swift 3、拡張子付き:
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)
}
}
これは、@ Mohsenasmによる回答と、Swiftに採用された@ Ghigoからのコメントの組み合わせです
extension UIView {
var globalFrame: CGRect? {
let rootView = UIApplication.shared.keyWindow?.rootViewController?.view
return self.superview?.convert(self.frame, to: rootView)
}
}