반응형
convertPoint를 사용하여 부모 UIView 내부의 상대 위치 가져 오기
나는이 주제에 대해 12 개의 SO 질문을 보았지만 어떤 대답도 나를 위해 일하지 않았습니다. 아마도 이것이 내가 올바른 길로 돌아가는 데 도움이 될 것입니다.
이 설정을 상상해보십시오.
center
UIView를 기준으로 UIButton 의 좌표 를 얻고 싶습니다 .
즉, UIButton 센터는 UITableViewCell 내에서 215, 80 일 수 있지만 UIView에 비해 상대적으로 260, 165와 비슷해야합니다. 둘 사이를 어떻게 변환합니까?
내가 시도한 것은 다음과 같습니다.
[[self.view superview] convertPoint:button.center fromView:button]; // fail
[button convertPoint:button.center toView:self.view]; // fail
[button convertPoint:button.center toView:nil]; // fail
[button convertPoint:button.center toView:[[UIApplication sharedApplication] keyWindow]]; // fail
버튼의 모든 수퍼 뷰를 반복하고 x 및 y 좌표를 합산하여 어려운 방법으로 할 수 있지만 과잉이라고 생각합니다. covertPoint 설정의 올바른 조합을 찾기 만하면됩니다. 권리?
button.center
superview 의 좌표계 내에 지정된 중심 이므로 다음이 작동한다고 가정합니다.
CGPoint p = [button.superview convertPoint:button.center toView:self.view]
또는 자체 좌표계에서 버튼의 중심을 계산하고 다음을 사용합니다.
CGPoint buttonCenter = CGPointMake(button.bounds.origin.x + button.bounds.size.width/2,
button.bounds.origin.y + button.bounds.size.height/2);
CGPoint p = [button convertPoint:buttonCenter toView:self.view];
스위프트 4
var p = button.convert(button.center, to: self.view)
마틴 대답이 맞습니다. Swift를 사용하는 개발자의 경우 다음을 사용하여 화면과 관련된 개체 (버튼,보기, ...)의 위치를 가져올 수 있습니다.
var p = obj.convertPoint(obj.center, toView: self.view)
println(p.x) // this prints the x coordinate of 'obj' relative to the screen
println(p.y) // this prints the y coordinate of 'obj' relative to the screen
Swift 4 수퍼 뷰가 아닌 버튼에서
호출해야합니다 convert
. 제 경우에는 너비 데이터가 필요했기 때문에 중심점 대신 경계를 변환했습니다. 아래 코드는 저에게 효과적입니다.
let buttonAbsoluteFrame = button.convert(button.bounds, to: self.view)
다음은 @Pablo 의 답변에 대한 Swift 3 업데이트입니다.
if let window = UIApplication.shared.keyWindow {
parent.convert(child.frame.origin, to: window)
}
신속한 2.2에서 나를 위해 일했습니다.
var OrignTxtNomeCliente:CGPoint!
if let orign = TXT_NomeCliente.superview, let win = UIApplication.sharedApplication().keyWindow {
OrignTxtNomeCliente = orign.convertPoint(TXT_NomeCliente.frame.origin, toView: win)
}
반응형
'Programing' 카테고리의 다른 글
지난 2 일 동안 변경된 Git 쇼 파일 (0) | 2020.12.07 |
---|---|
Android의 sqlite 데이터베이스에서 이미지를 저장 (비트 맵 이미지)하고 검색하는 방법은 무엇입니까? (0) | 2020.12.07 |
빈 문자를 어떻게 표현합니까? (0) | 2020.12.07 |
O (n) 알고리즘이 계산 시간 측면에서 O (n ^ 2)를 초과 할 수 있습니까? (0) | 2020.12.07 |
IllegalStateException : 조각이 이미 탭 호스트 조각에 추가되었습니다. (0) | 2020.12.07 |