2011-09-21 126 views
15

我有一個UIView,並希望它的底部部分淡出爲0不透明度。UIView上的漸變蒙版

這可以做到UIView(CALayer),以影響整個UIView及其內容?

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

附:您還需要將QuartzCore.framework鏈接到您的應用程序才能使其工作。

+0

我知道這是年齡較大,但獲取cgcolor然後再將它們連接回指針的處理是什麼? 'colors'屬性表示它是一個UIColors數組。 –

+0

從文檔 - **顏色**中抽象 - 定義每個漸變色的顏色的CGColorRef對象數組。要將它們存儲在NSArray中,我們將它們轉換爲id。坦率地說,我認爲在使用ARC時我們需要橋接模式,但代碼編譯正確,因爲它現在是 – Vladimir

+0

謝謝,它工作! – Deeper