2014-09-30 133 views
3

我有這樣的代碼來創建一個漸變背景如何創建漸變

CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = self.bounds; 
UIColor *startColour = [UIColor colorWithHexString:@"#bcdef6"]; 
UIColor *endColour = [UIColor colorWithHexString:@"#fad7e6"]; 
UIColor *middleColor = [UIColor colorWithHexString:@"#ffffff"]; 

gradient.colors = [NSArray arrayWithObjects:(id)[startColour CGColor],(id)middleColor, (id)[endColour CGColor], nil]; 
gradient.endPoint = CGPointMake(1, 0); 
gradient.startPoint = CGPointMake(0, 1); 
[self.layer insertSublayer:gradient atIndex:0]; 

我如何擺脫在中間的灰色效果?

這是期望的結果: enter image description here

這是實際的結果是: enter image description here

回答

0

我可以看到你的顏色陣列中的錯誤,你有沒有采取中間色的CGColor(白)。通過改變這個數組,我可以得到你想要的結果。

gradient.colors = @[(id)startColour.CGColor, (id)middleColor.CGColor, (id)endColour.CGColor]; 

通過播放漸變位置,您還可以看到更多藍色和粉紅色的顏色,以創造更好的效果。

gradient.locations = @[@0.2f, @0.5f, @0.8f]; 
+0

這確實解決了我的問題。你能解釋一下「地點」數組的含義嗎? – 2014-09-30 08:16:44

+0

位置是漸變站點,介於0.0和1.0之間,就像漸變距離上的百分比。因此,而不是開始混合0和50%之間的藍色和白色,它只能混合20%和50%,而前20%只是藍色。從文檔「漸變停止指定爲介於0和1之間的值。值必須單調遞增,如果爲零,則停止在整個範圍內均勻分佈,默認爲零 渲染時,顏色被映射到在插值之前輸出色彩空間。「 – 2014-09-30 08:23:32

+0

我還不明白? 0.2意味着藍色佔據左下角20%的畫布? – 2014-09-30 08:28:02