Я пытаюсь заполнить прямоугольник CGPattern, рисуя типичный бар полосами. Я получаю это.Правильный рисунок при обрезке CGPattern
Код шаблона (не весь бар) это
CGContextSaveGState (context);
CGColorSpaceRef patternSpace = CGColorSpaceCreatePattern(NULL);
CGContextSetFillColorSpace(context, patternSpace);
CGColorSpaceRelease(patternSpace);
CGFloat alpha = 0.25f;
static const CGPatternCallbacks callbacks = {0, &DrawStripesPattern, NULL};
NSNumber *cellSide = [NSNumber numberWithFloat:kTAGBarHeight];
CGFloat cellSideFloat = [cellSide floatValue];
CGPatternRef pattern = CGPatternCreate((__bridge void *)(cellSide),
CGRectMake(0.0f, 0.0f, cellSideFloat, cellSideFloat),
CGAffineTransformIdentity,
cellSideFloat,
cellSideFloat,
kCGPatternTilingConstantSpacing,
true,
&callbacks);
CGContextAddPath(context, [path CGPath]);
CGContextClip(context);
CGContextSetFillPattern(context, pattern, &alpha);
CGContextFillRect(context, barRect);
CGPatternRelease(pattern);
CGContextRestoreGState (context);
Клетка модель имеет ту же сторону высоты бара (смотреть на kTAGBarHeight
) и чертеж обратный вызов отображает 5 режущих косых линий внутри прямоугольника ячейки. Он выглядит хорошо, но если увеличить немного ...
Линии обрезаемый к клеточному прямоугольнику, так это выглядит так. У меня есть два вопроса:
- Почему картина не обращается в начале координат (0,0) в прямоугольнику из адвокатуры как я указываю в
CGPatternCreate
? Может ли это быть отсутствием преобразования в третьем параметре? - Как я могу избежать этого раздражающего эффекта?