2017-02-07 20 views
0

У меня есть путь, который заполняется, а также используется для клипа, чтобы обеспечить градиент. Отрисовка градиента только немного меньше или отличается от сглаживания по сравнению с рендерингом заливки. Это создает эффект контура:Нежелательный очерченный для 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