典型的なバーをストライプでペイントして、長方形を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本の斜めの線を描画しています。見た目は良さそうですが、少しズームすると...
線はセルの長方形にクリップされているので、そのように見えます。2つの質問があります:
- で指定したように、バーの長方形の原点(0,0)にパターンが描画されないのはなぜ
CGPatternCreate
ですか?3番目のパラメーターに変換がない可能性がありますか? - どうすればその迷惑な影響を回避できますか?