2013-04-27 3 views
0

의 backgroundFilters 속성에 CIFilter를 추가하여 UIView에 그려 봅니다. 그러므로 나는 CALayer을 서브 클래스 및 초기화에서 다음을 실행합니다 CALayer의 backgroundFilters가 UIView에 아무 것도 표시되지 않습니다.

CIFilter* blur = [CIFilter filterWithName:@"CIGaussianBlur"]; 
[blur setDefaults]; 
[blur setValue:@(10) forKey:@"inputRadius"]; 
self.backgroundFilters = @[ blur ]; 

그런 다음 나는 그것이 레이어가 작동

+[UIView layerClass]의 레이어 클래스를 반환하여의로이 사용자 정의 레이어를 가지고 UIView의 서브 클래스를 생성의 위의 코드가 실행됩니다!

그러나이 뷰를 UIImageView 위에 배치하면이 뷰를 배치 할 때 이미지가 blured로 그려지기를 기대합니다. 그러나 그렇지 않습니다! 이보기는 일반보기와 같이 동작하며 색상/알파 값을 backgroundColor 속성으로 설정했지만 그저 밑바닥이 UIImageView 인 것처럼 보입니다.

+0

어떻게 할 수 있습니까? – Lucas

+0

필자는 다음과 같이 썼습니다 : http://ios-coding.com/bcblurview-drawing-glass-like-views/ (블러 링은 스틸 이미지 용이며 Accelerate 프레임 워크를 사용하면 상당히 빨라질 수 있음) –

답변

4

의 UIView에 아무것도하지 않고있는 CALayer의 backgroundFilters 이유 즉, 불행하게도 backgroundFilters 속성이 아이폰 OS에 레이어를 지원하지 않습니다되어있다 . 이 설명의 맨 끝에, inside the documentation 내부의 :

특별 고려 사항

이 속성은 아이폰 OS에 레이어를 지원하지 않습니다.

UIView을 삽입하여이 물체를 뒤집어 썼습니다. iOS에서보기를 흐리게 처리하려면 더 많은 작업이 필요합니다 (UIView 내용을 이미지 내부로 복사 한 다음 이미지를 흐리게 표시 함).

+0

예, 잠시 후 혼자서 그것을 발견했습니다. 죄송합니다.이 게시물을 업데이트하지 않았습니다. 이 문제에 대한 블로그 게시물과 작은 오픈 소스 구성 요소를 작성했습니다. http://ios-coding.com/bcblurview-drawing-glass-like-views/ –

0

예상되는 동작이라고 생각합니다. docs에서

:

배경 필터는 레이어 자체에 통해 을 보여줍니다 레이어 뒤의 내용에 영향을 미칩니다. 일반적으로이 콘텐츠는 레이어의 부모 역할을하는 수퍼 레이어에 속합니다.

내 해석은 이러한 필터는 그들 만이 포함되는 뷰의 내용에 영향.

+0

하지만 레이어의 슈퍼 레이어는 뷰 슈퍼 뷰의 레이어입니까? 사실 이것이 이것이 효과가있을 것이라고 생각한 이유입니다. –

+0

이 레이어는 하나의보기에만 속합니다. 그 견해는 여과 될 것입니다. – sosborn

+0

그러나 'CALayer'는 그것을 만든 UIView에 대해 아무것도 모릅니다. 그것이 알고있는 모두는 그것이 붙어있는'superlayer '가 있다는 것입니다. 레이어는이'superlayer'가 다른 UIView 인스턴스에 의해 생성되었는지 신경 쓰지 않아야합니다! –

관련 문제