2012-06-22 2 views
3

CALayer에서 나에게 이상한 일이 생겼습니다. 그리고 CALayer의 프레임을 최종적으로 발견했습니다. 이해할 수없는 크기의 크기와 동일하지 않습니다. 프레임이 무엇인지 알고 있습니다. super의 좌표계에서 bounds는 자체 좌표이며 일반적인 경우는 frame.origin이 bounds.origin과 같지 않지만 frame.size가 bounds.size와 같습니다.CALayer frame.size가 bounds.size와 같지 않음

+0

하위보기에서 적용하고 변환 했습니까? 회전처럼? – dhilipsiva

+0

슈퍼 레이어 및 그 자체의 변형 – keywind

답변

7

프레임 속성에 대한 설명서에서 사과가 말한 것처럼 변환을 적용했기 때문입니다.

경고 변환 속성이 ​​ID 변환이 아닌 경우이 속성의 값은 정의되지 않으므로 무시해야합니다.

...이 속성에

변경 사항은 애니메이션 할 수 있습니다. 그러나 변환 속성에 비정상 변환이 포함 된 경우 프레임 속성의 값은 정의되지 않으므로 수정하면 안됩니다. 이 경우 은 center 속성을 사용하여 뷰의 위치를 ​​다시 지정하고 bounds 속성을 사용하여 크기를 조정할 수 있습니다. 당신이 적용되는 변환이없는 경우

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

는 기원이 다를 수 있습니다하지만 크기는 하나 다시는 다른 사람을 조정하는 조정으로 동일하게 유지해야한다. 하나의 변경은 서로 영향을주지 않도록

경계 사각형의 크기가

프레임 사각형의 크기에 결합된다.

+0

프레임의 값이 정의되지 않았으므로 무시해야한다면 시스템이 레이어를 그릴 위치를 어떻게 결정합니까? 사실 내 레이어는 항상 레이어의 경계보다 큽니다. – keywind

+1

center 속성을 사용합니다. "이 경우 center 속성을 사용하여 뷰의 위치를 ​​바꿀 수 있고 bounds 속성을 사용하여 크기를 조정할 수 있습니다. " 그것의 모든 문서에. 그리고 그것은 완벽한 의미를 갖습니다. 무언가를 회전시킬 때 "사각형"이 포함되어야합니다. 따라서 경계는 내부 정사각형의 크기와 포함 정사각형의 프레임을 정의합니다. – Pochi

+0

네, 이해합니다. 왜냐하면 2 배 배율로 경계가 2 배로 표시되기 때문입니다. 예를 들어 크기 (100,100)는 크기 (200,200)로 표시됩니다. – keywind

관련 문제