12

ここに、1 文字の文字列を含むブロックを描画する次のコードのチャンクがあります。

CGContextDrawImage(context, CGRectMake([blok getLocation].x * xunit, [blok getLocation].y * yunit, 40, 40), [blok getImage].CGImage);
[[blok getSymbol] drawAtPoint:CGPointMake([blok getLocation].x * xunit+15, [blok getLocation].y * yunit) withFont:[UIFont fontWithName:@"Helvetica" size:24]];

正常に動作していますが、レイアウトの変更を行っていて、描画された文字列が白になるようにする必要があります。塗りつぶしの色と線の色を設定するメソッドを使用しても何も起こりません。これを行う他の方法はありますか?

4

3 に答える 3

9

やってみました:

CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), textColor);

例えば:

CGContextDrawImage(context, CGRectMake([blok getLocation].x * xunit, [blok getLocation].y * yunit, 40, 40), [blok getImage].CGImage);
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), textColor);
[[blok getSymbol] drawAtPoint:CGPointMake([blok getLocation].x * xunit+15, [blok getLocation].y * yunit) withFont:[UIFont fontWithName:@"Helvetica" size:24]];
于 2012-07-31T22:49:03.920 に答える
7

これは、ラベルの描画に使用するものです。

- (void)_drawLabel:(NSString *)label withFont:(UIFont *)font forWidth:(CGFloat)width 
           atPoint:(CGPoint)point withAlignment:(UITextAlignment)alignment color:(UIColor *)color
{
    // obtain current context
    CGContextRef context = UIGraphicsGetCurrentContext();

    // save context state first
    CGContextSaveGState(context);

    // obtain size of drawn label
    CGSize size = [label sizeWithFont:font 
                             forWidth:width 
                        lineBreakMode:UILineBreakModeClip];

    // determine correct rect for this label
    CGRect rect = CGRectMake(point.x, point.y - (size.height / 2),
                             width, size.height);

    // set text color in context
    CGContextSetFillColorWithColor(context, color.CGColor);

    // draw text
    [label drawInRect:rect
             withFont:font
        lineBreakMode:UILineBreakModeClip
            alignment:alignment];

    // restore context state
    CGContextRestoreGState(context);
}
于 2012-07-31T22:50:18.703 に答える