Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 상대좌표 헷갈리기 쉬운 개념 convert(_:to:), convert(_:from:) (#좌표변환) 본문

iOS 응용 (swift)

[iOS - swift] 상대좌표 헷갈리기 쉬운 개념 convert(_:to:), convert(_:from:) (#좌표변환)

jake-kim 2025. 1. 7. 01:35

 

convert란?

  • 상대좌표를 구하고 싶을때 사용하는 것
    • "특정 뷰를 기준으로, y좌표가 얼마나 떨어져 있는가?"
    • "aView의 (0, 0) 좌표는 디바이스 전체 화면을 기준으로 좌표값이 무엇일까?"

ex) aView.origin의 좌표가 디바이스의 origin으로 부터 얼마나 떨어져 있는가?

  • self.view관점에서 aView.origin은 얼마나 떨어져 있는가를 구할 때는 aView.origin으로만 구할 수가 없음
  • 이럴때 convert(_:to:)함수를 사용하여 계산이 가능
  • 좌표의 원점이 될 기준이 되는 뷰는 to 파라미터에 넘기기
let aView = {
    let v = UIView(frame: CGRect(x: 100, y: 100, width: 200, height: 200))
    v.backgroundColor = .systemBlue
    return v
}()

aView.convert(CGPoint(x: 0, y: 0), to: view) // (100, 100)

  • 즉 convert는 아래처럼 사용하는 것
    • {알아내려는 좌표를 가지고 있는 뷰}.convert({알아내려는 좌표}, to: {원점으로 잡을 기준이 되는 뷰})

convert(_:to:)와 convert(_:from:)의 차이

  • 상대좌표 변환에는 convert(_:to:)와 convert(_:from:)이 있는데, 차이가 존재
  • to와 from의 차이
    • to: to에 들어가는 뷰의 좌표 -> 현재 뷰의 좌표
    • from: 현재 뷰의 좌표 -> from에 들어가는 뷰의 좌표
aView.convert(.init(x: 0, y: 0), to: view) aView.convert(.init(x: 0, y: 0), from: view)

정리

  • convert를 사용할 땐 궁금한 좌표를 첫번째 파라미터에 넣고, 특정 기준으로 잡을 뷰를 뒷 파라미터 (from or to)에 넣어서 사용
  • from과 to는 어떤 뷰를 원점으로 잡을것인지 차이
    • convert(_:from:): 다른 뷰의 좌표 → 현재 뷰의 좌표
    • convert(_:to:): 현재 뷰의 좌표 → 다른 뷰의 좌표

 

* 참고

- https://developer.apple.com/documentation/uikit/uiview/convert(_:from:)-8neo1

Comments