2010-05-12 5 views
2

CALayer와 하위 레이어가 있습니다. 내가 원하는 것은 표준 시트처럼 슈퍼 레이어 (서브 레이어 아래 영역)의 흐림입니다. 하위 레이어에 .compositingFilter을 설정하려고 시도했지만 작동하지 않는 것 같습니다.흐림 효과 CALayer의 수퍼 레이어

어떻게 해결할 수 있습니까? 서브 레이어에서

코드 초기화하기 :

CIFilter *blur = [CIFilter filterWithName:@"CIGaussianBlur"]; 
[blur setDefaults];  
self.layer.backgroundFilters = [NSArray arrayWithObject:blur]; 

답변

3

가 위가에서 사용되는 문맥에 따라 잘 작동합니다 일예를. 이미지가 들어있는 간단한 수퍼 레이어를 사용하면 다음과 같이 작동합니다.

+0

위의 코드는 ** - (id) init **에 있습니다. 내가 서브 뷰/레이어로 추가 한 후 동일하게했을 때, 그렇지 않으면 그렇지 않은 것처럼 효과를 적용했습니다. –

+0

eaigner :보기는 일반적으로'init' 메소드에서 초기화되지 않습니다. NSView의 올바른 이니셜 라이저는'initWithFrame :'입니다. 'init'에 넣는 유일한 이유는 (1) 뷰가 그 메소드에서 자신의 크기를 결정하고 그렇게 구성된 프레임으로'[super initWithFrame :]'을 호출하고 (2) 'alloc'과'init'을 사용합니다. –

+0

예, 알고 있습니다. 코드를 어디에 넣고 짧은 버전을 사용했는지 명확히하고 싶었습니다. 물론 initWithFrame이 맞을 것이다. –

관련 문제