티스토리 뷰

Swift + iOS/iOS

[ios] Bounds vs Frame?

군옥수수수 2018. 1. 22. 19:00

[ios] Bounds vs Frame


안녕하세요. 오늘은 여러분들도 한번쯤은 궁금해하셨을 Bounds와 Frame에 대해 저도 항상 의문점이 있었기에 공부해보았고 이에 대해 간단히 정리를 해보았습니다.

간단하게 둘을 비교하자면 다음과 같습니다.

  • Bounds : 뷰의 위치가 뷰 자신의 좌표계에 의해 결정됩니다.
  • Frame : 뷰의 위치가 부모 뷰에 의해 결정됩니다.

쉽게 이해가 되시나요? 아마 단순히 글로 설명드리면 이해가 힘드실 것 같아서 그림을 준비했습니다.

Frame

Frame은 그림에서와 같이 뷰의 좌표가 부모 뷰를 기준으로 결정됩니다. 다음으로는 Bounds를 살펴보도록 하겠습니다.

Bounds

Bounds는 본인의 좌표계에 의해 위치가 정해지기 때문에 어느 위치에 있던 (0,0)을 유지합니다.

단순히 이렇게 좌표가 다르다라고 말씀드리면 여전히 의문점이 드실겁니다. 그럼 왜 차이점을 둔거지? 그럼 이제 조금 다른 상황을 예를 들어 설명해보도록 하겠습니다. 먼저 이를 위해서는 Frame에 대한 이해가 있으셔야 합니다.

Frame은 단순히 만드려는 뷰를 나타내는 것이 아니라 만드려는 뷰를 감싸는 사각형 모양의 뷰입니다. 그리고 Frame의 좌표와 크기도 이렇게 감싸는 사각형의 좌표와 크기를 나타내는 것입니다. 그렇기 때문에 위 예제의 그림에서는 둘의 차이점을 잘 못느끼셨을 것입니다. 그럼 이제 Frame을 회전시켜보도록 하겠습니다.

Rotated Frame

어떠신가요!? 차이점이 느껴지시나요?! Frame은 감싸고 있는 뷰가 회전한다면 그에 맞춰 크기와 좌표가 바뀌게 됩니다. 하지만 Bounds는 본인의 크기와 좌표(0,0)을 유지하게 됩니다.

이 둘의 용도로는 Frame은 좌표를 기준으로 움직이는 애니메이션에 사용되기 적합하고 Bounds는 회전된 뷰의 Width나 Height을 알기에 적합합니다. Frame은 뷰가 회전하면 Frame이 그에 맞춰 커지기 때문입니다.


마무리

오늘은 이렇게 평소에는 궁금했으나 그 둘의 차이를 명확히 알지 못했던 Bounds와 Frame에 대해 알아보았습니다. 이렇게 공부하고나니 언제 어떤 것을 사용해야할지 감이 오네요! 감사합니다


참고자료

  1. Swift - Bounds vs. Frame - iOS Interview Question


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함