2012-02-29 7 views
2

UIViewサブクラスのdrawRectメソッド内にカスタムレンダリングを行うコードがあります。私は[NSString drawInRect]を使ってテキストをレンダリングしようとしていますが、それは常に白で表示されます。多くのグーグルとブラウジングの後、私はテキストの色を変更する方法を見つけることができませんでした。どんなアドバイスも素晴らしいでしょう。以下はiOSでビューの描画のテキストの色を設定しました

編集 は私のdrawRect実装

if(self.state != UIControlStateHighlighted) 
{ 
    CGContextSaveGState(context); 
    CGContextSetFillColorWithColor(context, color); 
    CGContextSetShadowWithColor(context, CGSizeMake(0, 2), 3.0, shadowColor); 
    CGContextAddPath(context, path); 
    CGContextFillPath(context); 
    [title drawInRect:rect withFont:[UIFont fontWithName:@"Helvetica-Bold" size:20]]; 
    CGContextRestoreGState(context); 
} 
+1

ここで 'context 'は' UIGraphicsGetCurrentContext() 'で取得されたと仮定しますか? –

+0

ところで、 'state'は実際にはビットフィールドです。 'if((self.state&UIControlStateHighlighted)== 0)'をテストする必要があります。 –

+0

正しいです。ビューはコンテキストに渡すすべてのものを適切にレンダリングします。テキストは色を変更しません。 – Seb

答えて

3

内のコードの抜粋であるあなたは、現在の塗りつぶしの色を変更しようとしたことがありますか?

[[UIColor redColor] setFill]; 
[string drawInRect:rect withFont:font]; 
+0

私は塗りつぶしとストロークを様々な色に設定しようとしましたが、それでも私が得るのは白いテキストです。 – Seb

7

テキストを描画する前に、色を設定する必要があります。これを試してみてください

[[UIColor blackColor] set]; 
[title drawInRect:rect withFont:[UIFont fontWithName:@"Helvetica-Bold" size:20]]; 
関連する問題