문제

다음 코드를 사용하여 핵심 애니메이션 계층에서 UIIMAGE를 만들 수 있습니다.

- (UIImage*)contentsImage;
{
   UIGraphicsBeginImageContext([self bounds].size);
   [self renderInContext:UIGraphicsGetCurrentContext()];
   UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();

   return image;
}

이 코드는 내 Calayer 파생 클래스에 있습니다. 내가 실행중인 문제는 생성 된 이미지로 렌더링되지 않는 내 층의 어린이 층인 두 개의 CashApelayers가 있다는 것입니다. 내가 표준 calayers를 아이들로 추가하면 잘 렌더링됩니다. 사과 문서는 다음과 같이 말합니다.

수신기와 해당 하위 레이어를 지정된 컨텍스트로 렌더링합니다.

또한 iPhone OS 2.0 이후에 사용할 수 있다고합니다. 내가 놓친 것이 있는지 또는 레이더를 제출 해야하는지 궁금합니다.

아이가 아동 Cashapelayers가 이미지에 끌리는 것을 막을 수있는 아이디어는 무엇입니까?

감사.

도움이 되었습니까?

해결책

Calayer Machinery는 RenderInconText를 호출하여 비트 맵 컨텐츠 속성을 작성합니다. 그러나 CashApelayer에서는 경로 속성이 실제로 헤더 에서이 노트에서 볼 수 있듯이 내용물로 렌더링되지 않습니다.

전체적으로 모양은 레이어 내용물과 첫 번째 하위 계이 사이에 합성됩니다.

RenderInconText는 실제로 CashApelayer 경로를 컨텍스트로 렌더링하지 않을 것이라는 이유가 있습니다. 그러나 나는 실제로 이것을 스스로 시도하지 않았습니다.

다른 팁

당신과 관련이 있는지 모르지만 RenderinContext에 대한 Calayer 문서에 메모가 있습니다.

**Important**: The Mac OS X v10.5 implementation of this method does not
support the entire Core Animation composition model. QCCompositionLayer, 
CAOpenGLLayer, and QTMovieLayer layers are not rendered. Additionally,
layers that use 3D transforms are not rendered, nor are layers that specify 
backgroundFilters, filters, compositingFilter, or a mask values. 
Future versions of Mac OS X may add support for rendering these layers
and properties.

어쨌든, 나는 이미지 컨텍스트에서 그리기와 함께 UIView DrawRect 함수를 사용할 때 비슷한 문제에 부딪쳤다. 서브 뷰가 포함 된 전체 uiview는 내가 drawRect를 호출 한 경우 하위 뷰를 그릴 수 없습니다 (DrawRect를 호출하는 경우 문서에서 실제로 말하기 때문에 슈퍼 및 하위 뷰 구현에 관계없이 해당 영역을 채울 책임이 있음). 나는 모든 하위 뷰에서 DrawRect라고 불러서 문제를 해결하여 자신의 프레임을 전달했습니다.

그래서 나는 renderincontext에서 멀어지고 대신 Calayer의 drawincontext를 사용하는 것이 좋습니다. 기본적으로 아무것도하지 않으므로 메소드를 무시해야합니다. 서브 클래스는 컨텍스트를 적절한 프레임으로 옮겨야합니다. 또한 안전하려면 추가 한 코드 중 어느 것도 이러한 레이어의 일반적인 렌더링에 영향을 미치지 않는지 확인할 수 있습니다.

나는 이것에 대한 레이더를 제출했다. 문서에서는 작동하지 말아야 할 이유가 없습니다. Apple이 레이더에 대답 할 때 여기에 응답 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top