2011-09-21 18 views
15

Mam UIView i chcę, aby jego dolna część znikała do 0 krycia.Maska gradientu na UIView

Czy można to zrobić na UIView (CALayer), aby wpłynąć na całe UIView i jego zawartość?

+0

Dla innych, którzy zmagają się z maską gradientu, nie zadziała, jeśli zostanie zastosowany do 'UIStackView'. –

Odpowiedz

31

Tak, można to zrobić poprzez ustawienie CAGradientLayer jako warstwy maski Państwa zdanie jest:

#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; 

PS: Musisz również połączyć się z aplikacją, aby działała.

+0

Wiem, że to jest starsze, ale w jaki sposób uzyskać cgcolor, a następnie połączyć je z powrotem do wskaźników? Właściwość 'colors' mówi, że jest to tablica UIColors. –

+0

abstract from docs - ** colors ** - Tablica obiektów CGColorRef określająca kolor każdego zatrzymania gradientu. Aby je przechowywać w NSArray, przesyłajmy je na identyfikator. Szczerze mówiąc, myślałem, że potrzebujemy zmostkowej obsady, gdy używamy ARC, ale kod skompilował się dobrze, ponieważ jest teraz – Vladimir

+0

dzięki, zadziałało !! – Deeper