2009-10-09 2 views
0

나는 약간 이상한 일을하고 있습니다. 내 응용 프로그램의 모든 구성 요소를 빨간색으로 칠하려고 노력 중입니다. (이것에 관해서 나에게 다른 게시물을 보았을 수도 있지만, 좀 더 구체적입니다.) 이렇게하려면 CALayer의 drawInContext에 대한 모든 호출을 가로 채고 있습니다. 원래 메서드를 호출 한 후 kCGBlendModeDarken (또는 kCGBlendModeMultipy)을 사용하여 레이어에 빨강을 합성합니다. 이것은 대부분의 UI 구성 요소에 대해 놀랍도록 잘 작동합니다. 그러나 UILabels로이 작업을 수행하면 이전에 투명한 배경이 흰색으로 바뀝니다 (실제로는 적색을 띤 흰색). 당신이 내 도구 모음도 UIImages이 착색되지 않도록UILabel의 배경을 합성 후 볼 수

http://www.thinkastronomy.com/RedLabels.png

주의이 이미지에 모양을 볼 수 있지만 그것은 또 다른 질문의 주제입니다.

누구나 왜이 합성으로 UILabel 배경이 보이게되는지 설명 할 수 있습니까? 합성 모드와 거의 독립적으로 일어나는 것 같습니다. 이 문제를 어떻게 방지 할 수 있습니까?

답변

0

레이블과 그 뒤에있는 모든 투명한 뷰에서 불투명도가 NO로 설정되어 있습니까? 불투명 한 값은 투명 배경에 문제를 일으킬 수있는 UIView의 특징입니다. 문서에서 : "불투명 한 경우 YES, 그렇지 않으면 불투명 한 경우 도면 작업은보기가 경계를 채우고보다 효율적으로 그릴 수 있다고 가정합니다. 불투명하고보기가 경계를 채우지 않으면 결과를 예측할 수 없습니다. 보기가 완전히 또는 부분적으로 투명하면이 속성을 NO로 설정하십시오. 기본값은 YES입니다. "