2011-12-05 9 views
3

色とその境界で塗りつぶされた矩形を描画する必要があります。 rectが色で正しく塗りつぶされていますが、外側の境界が部分的に描画されています。描かれた!CGContextStrokeRectは、辺の1つのみを描画しています

生成されたUIImageは、UITableViewCellのimageViewで使用されます。もしUIGraphicsBeginImageContext()にself.view.frame.sizeを通過した後、アレイに描画された矩形を使用する場合

- (UIImage *)legendItemWithColor:(UIColor *)color 
{ 
    UIGraphicsBeginImageContext(self.view.frame.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGRect outside = CGRectMake(128, 128, 128, 128); 
    CGRect legend = CGRectInset(outside, 1, 1); 

    NSLog(@"Outside: %@", NSStringFromCGRect(outside)); 
    NSLog(@"Legend: %@", NSStringFromCGRect(legend)); 

    CGContextSetFillColorWithColor(context, color.CGColor); 
    CGContextFillRect(context, legend); 

    CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor); 
    CGContextStrokeRect(context, outside); 

    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    UIGraphicsPopContext(); 

    return img; 
} 
+0

と表示されます。あなたのコードをシミュレータでチェックしても問題ありません。それは問題が 'self.view.frame.size'であるコンテキスト境界に関連している可能性があると言いました。 –

+0

cellview.image = [self legendItemWithColor:[UIColor orangeColor]]でtableviewでそれを使用しようとすることはできますか? ; – Progeny

+0

それはうまくないです。しかし、それを修正するには、self.view.frame.sizeではなく、UIGraphicsBeginImageContext()に適切なCGSizeを渡す必要があります。必要なサイズ(CGSizeMake(128 + 128 + 2,128 + 128 + 2))だけを渡すことをお勧めします。その後、それはOKを表示 –

答えて

2

問題は、それが縮小され、境界が難読化されています。必要なサイズ(CGSizeMake(2 * 128 + 128 + 2,2 * 128 + 128 + 2))だけを渡してください。次に、ok

関連する問題