Programming

UIView의 프레임, 경계, 중심, 원점, 언제 무엇을 사용해야합니까?

procodes 2020. 5. 11. 21:08
반응형

UIView의 프레임, 경계, 중심, 원점, 언제 무엇을 사용해야합니까?


UIView속성이있다 frame, bounds, center, 그리고 origin, 그들은 모두가 상호 것으로 보인다. 대부분의 경우, frame의 위치와 크기를 설정할 때 처리 합니다 UIView. frame전역 좌표 시스템을 bounds사용하고 로컬보기의 좌표를 사용 한다는 것을 이해합니다 (따라서 x와 y는 0이지만 항상 그런 것은 아닙니다).하지만 무엇을 사용 해야하는지 여전히 혼란 스럽습니다.

어떤 상황에서 다른 속성 ((오른쪽 시간은 무엇인가) bounds, center, origin)를 사용한다?


위의 마르코의 대답은 정확하지만 "어떤 상황에서"라는 질문을 확장하는 것입니다 ...

frame- 일반적인 iPhone 응용 프로그램에 가장 자주 사용하는 속성입니다. 대부분의 컨트롤은 "포함"컨트롤을 기준으로 배치되므로 frame.origin은 컨트롤을 표시해야하는 위치와 직접 일치하며 frame.size는 컨트롤의 크기를 결정합니다.

센터 - 이것은 당신이 가능성이 스프라이트 기반의 게임 및 이동이나 크기 조정이 발생할 수있는 애니메이션에 대해 초점을 맞출 것이다 속성입니다. 기본적으로 애니메이션 및 회전은 UIView의 중심을 기준으로합니다. frame 속성으로 이러한 객체를 시도하고 관리하는 것은 거의 의미가 없습니다.

bounds- 이 속성은 위치 지정 속성이 아니지만 UIView "드로잉 가능"영역을 프레임에 그릴 수있는 영역을 정의합니다. 기본적으로이 속성은 일반적으로 (0, 0, width , height )입니다. 이 속성을 변경하면 프레임 외부를 그리거나 프레임 내 더 작은 영역으로 드로잉을 제한 할 수 있습니다. 이에 대한 자세한 설명은 아래 링크를 참조하십시오. 도면 영역을 조정할 필요가없는 한이 속성을 조작하는 것은 일반적이지 않습니다. 유일한 예외는 대부분의 프로그램이 [[UIScreen mainScreen] bounds]시작시 응용 프로그램의 표시 영역을 결정하고 그에 따라 초기 UIView의 프레임을 설정하는 것입니다.

왜 UIView에 프레임 사각형과 경계 사각형이 있습니까?

바라건대 이것은 각 속성이 사용될 수있는 상황을 명확히하는 데 도움이되기를 바랍니다.


그것들은 관련 값이며 속성 setter / getter 메소드에 의해 일관되게 유지됩니다 (그리고 프레임은 실제 인스턴스 변수가 아닌 순수하게 합성 된 값이라는 사실을 사용합니다).

주요 방정식은 다음과 같습니다.

frame.origin = center - bounds.size / 2

(와 동일)

center = frame.origin + bounds.size / 2

(또한 있습니다)

frame.size = bounds.size

그것은 코드가 아니라 세 속성 사이의 불변을 표현하는 방정식입니다. 이 방정식은 또한 뷰의 변환이 기본적으로 ID라고 가정합니다. 그렇지 않은 경우 경계와 중심은 동일한 의미를 유지하지만 프레임은 변경 될 수 있습니다. 직각이 아닌 회전을 수행하지 않는 한 프레임은 항상 수퍼 뷰 좌표로 변환 된 뷰가됩니다.

이 내용은 유용한 미니 라이브러리로 자세히 설명되어 있습니다.

http://bynomial.com/blog/?p=24


속성은 center, boundsframe연동되어 하나가 너무 그러나 당신이 원하는 그들을 사용, 다른 사람을 업데이트합니다 변경. 예를 들어, 최근 frame뷰로 x / y 매개 변수를 수정하는 대신 center속성을 업데이트하면 됩니다.

참고 URL : https://stackoverflow.com/questions/1071112/uiviews-frame-bounds-center-origin-when-to-use-what

반응형