2014-09-19 85 views
2

我需要將上下漸變顏色從透明變爲黑色,而且不透明度爲30%。我發現最好的方法是使用CAGradientLayer。我想在「根」層之上添加該層,以避免爲此創建單獨的視圖。對於我來說,擁有比多個UIViews多層的圖層更有意義。到目前爲止,這是我寫的沒有運氣的。在根層上添加漸變子圖層

// view did load 
    var gradientLayer : CAGradientLayer = CAGradientLayer(); 
    gradientLayer.frame = coverView.bounds; 
    gradientLayer.colors = [UIColor.redColor(), UIColor.blueColor()]; 
    coverView.layer.insertSublayer(gradientLayer, above: coverView.layer); 
    // also tried below 
    // coverView.layer.insertSublayer(gradientLayer, atIndex: 0); 

我想要這個在圖像頂部顯示漸變顏色。下面的代碼根本不顯示任何內容。你能推薦我嘗試一下嗎?

回答

3

我自己解決了這個問題。由於該行發生問題:

gradientLayer.frame = coverView.bounds; 

coverView.bounds給出了完全不同的輸出。使用coverView.layer.frame確實使該圖層成爲父圖層的大小。

此外,CAGradientLayer顏色屬性不喜歡UIColor;使用CGColor解決了這個問題。我使用了atIndex屬性的函數。以下是最終代碼:

var gradientLayer : CAGradientLayer = CAGradientLayer(); 
gradientLayer.frame = coverView.layer.frame; 
gradientLayer.colors = [UIColor.clearColor().CGColor!, UIColor.blackColor().CGColor!]; 
gradientLayer.startPoint = CGPointMake(0.5, 0.0); 
gradientLayer.endPoint = CGPointMake(0.5, 1.0) 
gradientLayer.opacity = 0.8; 
coverView.layer.insertSublayer(gradientLayer, atIndex: 0);