2011-09-21 3 views
15

UIView가 있고 그 아래쪽 부분을 0 불투명으로 페이드하고 싶습니다.UIView의 그라디언트 마스크

전체 UIView 및 해당 내용에 영향을주기 위해 UIView (CALayer)에이 작업을 수행 할 수 있습니까?

+0

그라디언트 마스크로 고생하는 사람들에게는 'UIStackView'에 적용하면 작동하지 않습니다. –

답변

31

예, 당신이 할 수있는 뷰의 레이어 마스크로 CAGradientLayer을 설정하여 :

#import <QuartzCore/QuartzCore.h> 

... 

CAGradientLayer *maskLayer = [CAGradientLayer layer]; 

maskLayer.frame = view.bounds; 
maskLayer.colors = @[(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor]; 
maskLayer.startPoint = CGPointMake(0.5, 0); 
maskLayer.endPoint = CGPointMake(0.5, 1.0); 

view.layer.mask = maskLayer; 

P.S. 또한 작동하도록 앱에 QuartzCore.framework을 연결해야합니다.

+0

나는 이것이 더 오래되었다는 것을 알고있다. 그러나 cgcolor를 가져 와서 포인터로 다시 연결하는 것은 무엇을 의미 하는가? 'colors' 속성은 그것이 UIColors의 배열이라고 말합니다. –

+0

docs - ** colors ** - 각 그래디언트 정지의 색상을 정의하는 CGColorRef 객체의 배열입니다. 그들을 NSArray에 저장하기 위해 우리는 그것을 id로 캐스팅합니다. 솔직히 ARC를 사용할 때 브릿지 캐스트가 필요하다고 생각했지만 코드가 지금 컴파일 된대로 괜찮습니다. – Vladimir

+0

감사합니다. – Deeper