Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bounds와 Frame의 차이점을 설명하시오. #2

Open
hyesuuou opened this issue Aug 15, 2021 · 3 comments
Open

Bounds와 Frame의 차이점을 설명하시오. #2

hyesuuou opened this issue Aug 15, 2021 · 3 comments
Labels

Comments

@hyesuuou
Copy link
Member

No description provided.

@hyesuuou hyesuuou added the iOS label Aug 15, 2021
@heerucan heerucan changed the title Bound와 frame의 차이점을 설명하시오. Bounds와 frame의 차이점을 설명하시오. Aug 15, 2021
@Taehyeon-Kim Taehyeon-Kim changed the title Bounds와 frame의 차이점을 설명하시오. Bounds와 Frame의 차이점을 설명하시오. Aug 15, 2021
@Taehyeon-Kim
Copy link
Contributor

frame vs bounds

frame과 bounds 사이에는 좌표계, 크기, 움직임 크게 3가지 차이점이 존재한다.

첫 번째로, frame은 Superview의 좌표계를 기준으로 뷰의 위치와 크기를 설명하고,
bounds는 뷰 자신의 좌표계를 기준으로 뷰의 위치와 크기를 설명한다.

두 번째로, frame에서 size는 view를 감싸는 크기를 의미한다. 따라서 회전시에는 size가 증가한다.
bounds에서 size는 view 자체의 본래 크기를 의미한다.

세 번째로, frame에서의 움직임은 origin이 변경되는 개념이다. 자기 자신의 frame을 이동시킨다.
bounds에서의 움직임은 viewport가 변경되는 개념이다. 그래서 subviews frame이 반대 방향으로 움직이는 것처럼 보인다.

@hyesuuou
Copy link
Member Author

hyesuuou commented Aug 21, 2021

frame은 한단계 Superview를 기준으로 상대적인 위치와 크기를 나타내는 좌표이고, bounds는 상대적인 위치와 크기가 아니라 현재의 뷰 자체, 자신의 좌표시스템으로 뷰의 위치와 크기를 조정한다. 그렇기에 bounds의 origin 좌표는 항상 (0,0)이다.

bounds와 frame의 차이는 좌표를 이동할 때 확실하게 나타난다. frame의 좌표를 이동할 때에는 해당 뷰가 슈퍼뷰 안에서 이동하는 것처럼 보인다. 하지만 bounds의 좌표를 이동하면 해당 뷰가 포함하는 하위 뷰가 보여지는 위치를 바꾸게 된다.

@heerucan
Copy link

bounds는 자기자신의 좌표계를 기준으로, frame은 상위뷰의 좌표계를 기준으로 view의 origin과 size를 결정한다.
따라서 view의 위치를 결정할 때는 frame을 사용하고, view를 rotate, scale을 한 후 view의 size는 bounds를 사용한다.

@heerucan heerucan reopened this Oct 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants