2011-09-21 18 views
15

UIView'm var ve alt kısmının 0 opaklığına dönüşmesini istiyorum.UIView üzerinde gradyan maskesi

Tüm UIView ve içeriğini etkilemek için bu bir UIView'e (CALayer) yapılabilir mi?

+0

Degrade maskesiyle mücadele eden diğer kullanıcılar için, bir "UIStackView" öğesine uygulandığında çalışmaz. –

cevap

31

Evet, bunu yapabilirsiniz görünümün katman maske olarak CAGradientLayer ayarlayarak:

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

Not; Ayrıca, işleri yapmak için uygulamanıza QuartzCore.framework bağlantısını da bağlamanız gerekir.

+0

Bunun daha eski olduğunu biliyorum, ama cgcolor'ları alıp sonra işaretçilere geri götürmekle ilgili anlaşma nedir? 'Colors' özelliği, UIColors bir dizi olduğunu söylüyor. –

+0

dokümanlardaki özet - ** renkler ** - Her gradyan durağının rengini tanımlayan bir CGColorRef nesnesi dizisi. Bunları NSArray'da saklamak için onları id olarak yayınlıyoruz. Açıkçası, ARC kullanırken köprülü döküm gerektiğimizi sanıyordum, ancak kod şimdi – Vladimir

+0

teşekkürler derledim, teşekkürler, işe yaradı! – Deeper