Bounds와 Frame 비교해보기.

Lin·2020년 3월 25일
1

iOS

목록 보기
3/7

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

1. 애플 공식 문서(해석)

  • Bounds
    Bounds 사각형은 자체 좌표계에서 view의 위치와 크기를 말합니다.

    기본적인 bounds는 (0, 0)이며 frame 프로퍼티의 사각형 크기와 동일합니다.
    이 직사각형의 크기 부분을 변경하면 중심점을 기준으로 view가 확대되거나 축소됩니다.
    또한 크기를 변경하면 frame 프로퍼티의 사각형 크기도 일치하도록 변경됩니다.
    Bounds 사각형의 좌표는 항상 특정한 점(point)에 지정됩니다.

    Bounds 사각형을 변경하면 draw(:) 메서드가 호출되지 않고 view가 자동으로 다시 표시됩니다.
    당신이 UIkit에서 draw(_:) 메서드를 호출하고 싶다면, contentMode 속성을 UIView.ContentMode.redraw로 설정합니다.

  • Frame
    Frame 사각형: superView의 좌표 시스템에 있는 view의 위치와 크기를 말합니다.
    이 직사각형은 수퍼뷰의 좌표 시스템에서 view의 크기와 위치를 정의합니다.
    레이아웃 작업 중에 이 사각형을 사용하여 view의 크기를 설정하고 위치를 지정합니다.
    이 속성을 설정하면 center 프로퍼티로 지정된 점(point)이 변경되고 이에 맞춰서 Frame 사각형의 크기가 변경됩니다.
    Frame 사각형의 좌표는 항상 특정한 점(point)에 지정됩니다.
    Warning
    Transform 프로퍼티가 정해지지 않은 transform일 경우, 해당 프로퍼티의 값이 정의되지 않으므로 이 속성이 무시될 수 있습니다.
    => 정의되지 않은 transform 프로퍼티는 사용하지 못한다는 말 같음.
    => 당연한거 아닌가?
    => transform : 해당 프로퍼티를 사용해 view의 좌표계 내에서 뷰의 frame을 조정하거나 회전시킬 수 있습니다.
    Frame 사각형을 변경하면 draw(_:) 메서드가 호출되지 않고 view가 자동으로 다시 표시됩니다.
    당신이 UIkit에서 draw(_:) 메서드를 호출하고 싶다면, contentMode 속성을 UIView.ContentMode.redraw로 설정합니다.

2. 정리

  • 공통점
    view의 위치(좌표)와 크기를 나타내는 속성임.
    : x, y 좌표 / width, height 값

  • 차이점
    어디를 기준으로 잡고 뷰의 위치(좌표)와 크기를 나타내는지가 다르다.
    - frame은 superView(상위뷰)를 기준으로 자신의 위치를 정한다. (말해준다?)
    예를 들어 subView의 frame 좌표가 (10, 10)일 경우 superView(상위뷰)로 부터 (10, 10)만큼 떨어져 있다는 의미가 된다.
    - frame의 경우 view를 감싸는 사각형 모양의 view이기 때문에 회전시킬경우 좌표나 너비, 높이가 전부 달라지게 된다. 하지만 bounds의 경우 달라지지 않는다.
    - bounds는 자신을 기준으로 자신의 위치를 정한다. (자체 좌표계의 의미가 여기서 해당된다..!)
    - bounds의 좌표를 다시 설정해 줄 경우, 예를 들어 0,0 -> 100, 100으로 좌표를 변경해줄 경우 해당 view를 (100, 100)만큼 이동해주는게 아닌 해당 view를 (100, 100)위치에서 view를 다시 그려주게 된다.

profile
수많은 에러를 경험 중..😵

1개의 댓글

comment-user-thumbnail
2020년 3월 28일

ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 당연한거 아닌가 ㅋㅋㅋㅋㅋ
웃고갑니다. 화이팅!!

답글 달기