全てにおいて良い日。
現時点では、NSAttributedStringをサポートするCCLabelTTFサブクラスを実装して、マルチカラーラベルを取得しようとしています。そして、私はCoreTextとCoreGraphicsの知識の欠如によって妨げられています。
いくつかのガイドを読んだ後、NSAttributedStringオブジェクトを使用してテクスチャを作成するためのCCTexture2Dカテゴリを作成しました。
これが私の描画コードです:
data = calloc(POTHigh, POTWide * 2);
colorSpace = CGColorSpaceCreateDeviceGray();
context = CGBitmapContextCreate(data, POTWide, POTHigh, 8, POTWide, colorSpace, kCGImageAlphaNone);
CGColorSpaceRelease(colorSpace);
if( ! context )
{
free(data);
[self release];
return nil;
}
UIGraphicsPushContext(context);
CGContextTranslateCTM(context, 0.0f, POTHigh);
CGContextScaleCTM(context, 1.0f, -1.0f);
// draw attributed string to context
CTFramesetterRef frameSetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)string);
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL, CGRectMake(0.f, 0.f, dimensions.width, dimensions.height));
CTFrameRef frame = CTFramesetterCreateFrame(frameSetter, CFRangeMake(0, 0), path, NULL);
CTFrameDraw(frame, context);
UIGraphicsPopContext();
CFRelease(frame);
CGPathRelease(path);
CFRelease(frameSetter);
そして今、私はいくつかの問題を抱えています:
最初のもの-私のテクスチャは垂直に反転して表示されます。私は、これらの行は
CGContextTranslateCTM(context, 0.0f, POTHigh);
CGContextScaleCTM(context, 1.0f, -1.0f);
これを防ぐ必要があります。
2つ目は、RGBコンテキストを作成すると、画面に何も表示されないことです。これらの線でRGBコンテキストを作成しようとしました。
colorSpace = CGColorSpaceCreateDeviceRGB();
context = CGBitmapContextCreate(data, POTWide, POTHigh, 8, POTWide * 4, colorSpace, kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Big);
グーグルしようとしましたが、私の問題に関連するものは何も見つかりません=(ヘルプ(リンクまたは提案)はありがたいです。