a의 위치는 UIView
분명히에 의해 결정될 수있다 view.center
또는 view.frame
등하지만 이것은 단지의 위치를 반환 UIView
그것의 즉각적인 수퍼 관련.
UIView
전체 320×480 좌표계에서 위치를 결정해야 합니다. (가) 예를 들어, UIView
A의 인 UITableViewCell
윈도우 내에서 그것의 위치시킵니다 슈퍼 뷰의 극적 선명하게 촬상 변경 될 수 있습니다.
이것이 가능하다면 어떻게 생각합니까?
건배 🙂
답변
쉬운 일입니다.
[aView convertPoint:localPosition toView:nil];
… 로컬 좌표 공간의 한 점을 창 좌표로 변환합니다. 이 방법을 사용하여 다음과 같이 창 공간에서 뷰의 원점을 계산할 수 있습니다.
[aView.superview convertPoint:aView.frame.origin toView:nil];
2014 편집 : Matt__C의 의견이 인기를 보았을 때 좌표가 …
- 장치를 회전 할 때 변경하지 마십시오.
- 항상 회전되지 않은 화면의 왼쪽 상단에 원점이 있습니다.
- 창 좌표 : 좌표계 는 창의 경계에 의해 정의됩니다. 화면과 장치 좌표계가 다르므로 창 좌표와 섞어서는 안됩니다.
답변
스위프트 5, 스위프트 4 :
let globalPoint = aView.superview?.convert(aView.frame.origin, to: nil)
답변
스위프트 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)
}
}
답변
스위프트에서 :
let globalPoint = aView.superview?.convertPoint(aView.frame.origin, toView: nil)
답변
여기 @Mohsenasm의 답변과 Swift에 채택 된 @Chigo의 의견이 결합되어 있습니다.
extension UIView {
var globalFrame: CGRect? {
let rootView = UIApplication.shared.keyWindow?.rootViewController?.view
return self.superview?.convert(self.frame, to: rootView)
}
}