2011-01-27 6 views
2

UITabBarItem에 이미지를 설정할 때 iOS에서 발생하는 것으로 보이는 프로세스를 Cocoa/Core Graphics로 복제하려고합니다. 탭 막대 항목을 선택하면 이미지에 그라디언트가 중첩됩니다.NSImage 오버레이/마스크 iOS와 같은 그라데이션

enter image description here

이된다 예를 들어

, ...

enter image description here

나는이 효과를 달성하기 위해 일을해야 정확히 확실 해요. 이미지가 그라디언트를 마스킹하는 것처럼 보입니다. 올바른 방향 (또는 코드!)에있는 모든 포인터를 많이 주시면 감사하겠습니다.

답변

3

알파벳 채널 (대부분의 iPhone 도구/탭 모음 아이콘과 유사)을 마스크로 사용하여 흑백 CGImage을 사용할 수 있습니다. 기본적으로 흑백 이미지에는 CGContextClipToMask을 사용합니다. 그런 다음 그라데이션을 그려서 마스크 이미지에 클립핑합니다. UMEKit의 코드를 살펴보고 Mac OS X에서이 효과를 구현할 수도 있습니다 (정확히 어떻게하는지 보지 않았지만 여러 가지 방법이있을 수 있습니다).

+0

다른 프로젝트에서 실제로 UMEKit을 사용하고 있으며 생각조차하지 않았다는 것을 알고 있습니다. 제안 해 주셔서 감사합니다! – JoeR

+0

UMEKit이하는 일을 마무리했습니다. 먼저 drawRect 메소드에 그래디언트를 그리고 그 위에 NSImage를 합성합니다. 이렇게하면 [TopWave drawAtPoint : NSMakePoint (0, 0) fromRect : NSMakeRect (0, 0, self.frame.size.width, self.frame. size.height) 작업 : NSCompositeDestinationAtop 분수 : 1.0],' – JoeR