CGContextStrokeRect dibuja solo un lado de rect

Necesito dibujar un rectángulo lleno de color y su borde … el rectángulo está lleno de color correctamente, pero el borde exterior está dibujado parcialmente, ¡solo se dibuja el lado derecho del rectángulo!

El UIImage generado se va a usar en una imageView de UITableViewCell.

- (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; } 

El problema es cuando pasas self.view.frame.size a UIGraphicsBeginImageContext () y luego utilizas un rectángulo dibujado en una matriz, se networkinguce la escala y el borde queda ofuscado. Intenta pasar solo el tamaño que necesitas, es decir, CGSizeMake (2 * 128 + 128 + 2,2 * 128 + 128 + 2). Entonces se muestra bien