2011-01-27 18 views
2

私はUITableViewとカスタムUITableViewCellで作業しています。最初は、nibファイルからセルのビューをロードしていたため、パフォーマンスが低下していました。コアグラフィックス描画のシェイプとテキストのブレンド

TwitterのiPhoneの著者によるブログ投稿で、パフォーマンス向上のための独自のグラフィックス描画について説明しています。これは簡単に聞こえますね。

だから、私はここにいることをやって始まった:あなたが見ることができるように

- (void)drawRect:(CGRect)rect{ 
// Drawing code 
#define LEFT_COLUMN_WIDTH 48 

#define MIDDLE_COLUMN_OFFSET 52 
#define MIDDLE_COLUMN_WIDTH 180 

#define MAIN_FONT_SIZE 12 
#define MIN_MAIN_FONT_SIZE 10 
#define SECONDARY_FONT_SIZE 10 
#define MIN_SECONDARY_FONT_SIZE 10 

#define RIGHT_COLUMN_SIZE 70 
#define PADDING 4 

UIColor * secondaryTextColor = nil; 
UIFont * secondaryFont = [UIFont systemFontOfSize:SECONDARY_FONT_SIZE]; 

//mainTextColor = [UIColor blackColor]; 
secondaryTextColor = [UIColor blackColor]; 
self.backgroundColor = [UIColor whiteColor]; 


CGPoint point; 

CGSize size; 

//[mainTextColor set]; 

NSString * textToDisplay = @"Test"; 

CGPoint rightColumnStart = CGPointMake(self.frame.size.width - PADDING - RIGHT_COLUMN_SIZE, 0); 

point = CGPointMake(rightColumnStart.x + (RIGHT_COLUMN_SIZE/2 - size.width/2), 40); 
[textToDisplay drawAtPoint:point forWidth:RIGHT_COLUMN_SIZE withFont:secondaryFont minFontSize:MIN_SECONDARY_FONT_SIZE actualFontSize:NULL lineBreakMode:UILineBreakModeTailTruncation baselineAdjustment:UIBaselineAdjustmentAlignBaselines]; 

    // background color 
/*CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextBeginPath(context); 
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor); 
CGContextAddRect(context, CGRectMake(rightColumnStart.x, 0, RIGHT_COLUMN_SIZE, self.frame.size.height)); 
CGContextFillPath(context); 
*/ 
} 

、上に行くものがたくさんあります(ハードコーディング座標のかなりの量は、ちょうど今のマジックナンバーを無視します) 。

コードブロックで、コメント「背景色」を検索すると、色の付いた四角形を描いていることがわかります。また、私は長方形の上部に表示したい同じ座標空間内のテキスト「テスト」を描いています。

したがって、「背景色」を有効にしないでアプリケーションを実行すると、「テスト」テキストが問題なく表示されます。それは、黒、サイズ10、偉大に見え、正しく配置されています。

私は矩形を描画すると、 "テスト"のテキストが表示されません。色付きの四角形の後ろにレンダリングされる可能性があります。または、ブレンドが正しくセットアップされていない可能性があります。

どのようにこの問題を回避し、黒いテキストが色付きの矩形の上に現れるように2つを混ぜ合わせますか?私はGoogleから何を質問すればいいのか分からないので、とても簡単です。

感謝!!!!

答えて

2

は、第1の背景と、それの上にテキストを描画します。

0

テキストを描画した後、背景色を描画しているように見えます。テキストをその前に表示するには、その前にテキストを描画する必要があります。

関連する問題