2013-10-28 7 views
0

NSImageView 아래에 그림자를 그리려하고 있습니다. 내가보기의 CALayer에 액세스하고이 그림자 속성을 설정 해요 :NSImageView 주위에 그림자 그리기

[self.originalImageView setWantsLayer:YES]; 
CALayer *imageLayer = self.originalImageView.layer; 
[imageLayer setShadowRadius:5.f]; 
[imageLayer setShadowOffset:CGSizeZero]; 
[imageLayer setShadowOpacity:0.5f]; 
[imageLayer setShadowColor:CGColorCreateGenericGray(0, 1)]; 
imageLayer.masksToBounds = NO; 

그러나 심지어 내가 NO 등의 경계에 마스크를 설정 한 불구을,이납니다 :

enter image description here

그림자를주의 깊게보세요. 완벽하게 수평으로 표시되지만 수직으로 잘라냅니다. 이미지는 가로 세로로 맞추고 이미지와 이미지보기는 모두 임의의 크기가 될 수 있습니다. 레이어의 그림자 대신 NSShadow으로 시도해도 정확하게 동일한 결과가 나타납니다. iOS에서 myView.clipsToBounds = NO을 사용할 수 있었지만이 문제를 해결하는 데 사용했지만 Mac에서 해당 속성을 찾을 수 없습니다.

클리핑없이 임의의 크기의 NSImageView으로 그림자를 그릴 수있는 방법은 무엇입니까?

+1

답변도 없습니다. 내가 말할 수있는 것은 그 그림자가보기에 잘린 것처럼 보일뿐입니다 (너의 것이 분명히 이미지보다 넓지 만 같은 높이). 슬프게도, masksToBounds = NO는 여기서 도움이되지 않습니다. – uliwitness

+0

에 최신 xcode를 추가하면 CI 필터를 뷰에 적용 할 수 있다는 것을 알았습니다. (이전에 해당 기능을 사용할 수 있는지 여부는 알 수 없습니다.) 컨테이너의 내 이미지보기 *에 그림자를 적용했습니다. 보기의 레이어 *. 그것은 완벽하게 작동합니다. 최하위 : 이미지 뷰의 자체 레이어에 필터를 적용해도 똑같은 일이 발생하지만 컨테이너 뷰의 레이어에 필터를 적용하면 효과가 나타납니다. –

답변

0

최신 Xcode를 사용하면 뷰에 CI 필터를 적용 할 수 있다는 것을 알았습니다 (이전에 해당 기능을 사용할 수 있었는지 여부는 알 수 없습니다). 그리고 내 이미지보기에 그림자를 적용했습니다. 컨테이너 뷰의 레이어 그것은 완벽하게 작동합니다. 결론 : 이미지 뷰의 자체 레이어에 필터를 적용해도 똑같은 일이 발생하지만 컨테이너 뷰 레이어에 적용하면 작동합니다!

관련 문제