2010-01-06 3 views
3

initWithFrame에서 초기화 된 2 개의 CGLayer가있는 UIView 하위 클래스 (실제로는 퍼즐 조각)가 있습니다. 에서의 drawRect그리기 전에 CGLayer의 "불투명도"를 설정 하시겠습니까?

혼합물이 두 층을 가지고 있고, 최상부의 게임 로직에 따라 알파변수를 가져야한다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? CGLayer 또는 CGContext 함수가 그려지기 전에 일부 알파를 설정합니까?

답변

6

레이어의 -opacity을 설정합니다. 레이어의 -opaque 설정을 NO로 설정해야합니다. 기본값은 NO이지만 일반적으로 성능상의 이유로 YES로 설정됩니다.

-drawInContext:을 이미 작성한 경우 CGContextSetAlpha()으로 실험 할 수 있습니다. 하지만 일반적으로 -drawRect:과 레이어를 동시에 사용하지 마십시오. 대개보기 또는 도면층이 도면을 보게합니다.

+0

당신은 내가 독립적 인 예를 만들어야한다는 것을 의미합니다. - (void) renderView 메서드를 사용하고 거기에 도면을 구현합니까? [puzzlePiece setNeedDisplay]는 간단한 [puzzlePiece renderView]로 대체 될 수 있습니까? – Geri

+0

매번 뷰의 모든 부분을 렌더링해야하는 경우에 맞다. 그렇지 않으면 모델 클래스 (데이터)가 변경 될 때 필요한 레이어를 다시 렌더링합니다. 다른 레이어에서 다시 그리기가 필요하기 때문에 레이어를 다시 그릴 이유가 없습니다. –

+0

'코스. 퍼즐 조각은 PuzzlePiece : UIView 클래스의 addSubview 인스턴스에 실제로 할당되므로 최근에 사용자가 조작 한 부분 만 다시 그리기 메시지를받습니다 (위의 renderView는 "renderPuzzleView"를 의미 함). – Geri