2011-09-15 2 views
5

부모 레이어의 왼쪽 하단 모서리에있는 작은 빨간색 상자 (CALayer 인스턴스) (NSView을 호스팅하는 레이어의 루트 레이어)를 상상해보십시오.상위 NSView의 크기를 조정하면서 CALayer를 같은 위치에 유지하는 방법은 무엇입니까?

부모보기의 프레임이 변경되면 빨간색 상자는 화면의 동일한 위치에 있어야합니다. 부모보기의 왼쪽 하단 모서리를 기준으로 위치를 조정하여이 작업을 수행합니다.

어떤 경우에는 깜박 거리고 올바른 위치에 표시되기 전에 확장 된 프레임의 왼쪽 아래 모서리에 빨간색 상자 레이어가 그려지는 것을 볼 수 있습니다.

프레임과 위치 변경을 하나의 CATransaction으로 바꾸는 것이 두 가지 변경을 동시에 수행한다고 가정했으나 항상 작동하지는 않습니다 (문서에서는 트랜잭션을 사용하여 애니메이션이 동시에 시작되지만 여전히 때때로 경주 상태 인 것 같다).

하위 레이어를 인식 된 위치에 유지하면서 부모 프레임의 프레임을 조절하려면 어떻게합니까? NSView

예제 코드 :

NSView and box layer

내 자신의 아이디어 :

  1. 숨기기 빨간색 상자 층, 위치를 업데이트 다시

  2. 사용을 보여 제약 조건을 오른쪽 모서리에 바인딩합니다. 문제는이 오프셋도 변경 될 수 있으며 같은 깜박임 문제가 발생할 수있는 제약 조건을 업데이트해야한다는 것입니다.

답변

0

레이어를 뷰와 함께 이동 시키려면 이미 작성한 코드를 삭제하고 레이어를 생성하는 위치에 붙여 놓으십시오.

boxLayer.autoresizingMask = kCALayerMaxXMargin | kCALayerMinYMargin; 
관련 문제