2017-02-07 61 views
0

我有一個填充的路徑,也用於剪輯以提供漸變。與填充的渲染相比,漸變的渲染只是稍微小一點或不同的消除鋸齒。這將創建輪廓效果:不需要的概述出現在UIBezierPath中,該UIBezierPath被填充並用作查看直通漸變的剪輯

image of a leaf shape with a light yellow to gray gradient, surrounded by a darker grey jagged outline

有什麼辦法消除這種輪廓?

注意的是:

  1. 使用兩個單獨繪製相同的路徑並沒有解決問題
  2. 使用沒有填充,但兩個梯度而不是不能解決的問題。即使只是在另一個漸變上漸變,你也可以看到輪廓。
  3. 通過僅使用沒有填充的實體漸變,可以獲得我想要的沒有輪廓的漸變,但這會使漸變的漸變效果在以後變得更加困難。

下面是代碼:

let path4Path = UIBezierPath() 
//ordinary drawing stuff here 
path4Path.close() 
fillColor.setFill() //set to black fill 
path4Path.fill() 
context.saveGState() 
context.setAlpha(0.9) 
path4Path.addClip() 
context.drawLinearGradient(allToldGradient, start: CGPoint(x: 52.72, y: 114.48), end: CGPoint(x: 30.22, y: 91.99), options: []) 
context.restoreGState() 

回答

0

我想你HABE關閉抗鋸齒,如:

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetShouldAntialias(context, NO); 
CGContextSetAllowsAntialiasing(context, NO); 
CGContextSetInterpolationQuality(context, kCGInterpolationNone); 
+1

請把你的英語回答 –

+0

謝謝!我會嘗試一下,並回來標記正確的答案,如果它的作品。 – TheCodePig