2009-07-31 3 views

risposta

21

È possibile disegnare il colore in un CGContext e quindi acquisire un'immagine da esso:

- (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)size { 
    //Create a context of the appropriate size 
    UIGraphicsBeginImageContext(size); 
    CGContextRef currentContext = UIGraphicsGetCurrentContext(); 

    //Build a rect of appropriate size at origin 0,0 
    CGRect fillRect = CGRectMake(0,0,size.width,size.height); 

    //Set the fill color 
    CGContextSetFillColorWithColor(currentContext, color.CGColor); 

    //Fill the color 
    CGContextFillRect(currentContext, fillRect); 

    //Snap the picture and close the context 
    UIImage *retval = UIGraphicsGetImageFromCurrentImageContext(void); 
    UIGraphicsEndImageContext(); 

    return retval; 
} 
+0

Credo che ci sia un metodo che rende più facile che disegnarlo. L'ho visto qualche volta mentre navigavo ma me lo ricordo. Ho pensato di pubblicarlo qui se qualcuno lo sa. – rkb

+0

Disegnare è ~ 7 linee che puoi avvolgere in un metodo comodo, non lo vedo molto più facile, non è esattamente una funzione comune. –

+0

Considera UIGraphicsGetImageFromCurrentImageContext(); invece di UIGraphicsGetImageFromCurrentImageContext (void); – LordParsley

2

Se stai solo cercando di creare un solido rettangolo di colore perché non basta fare una cosa del genere

UIView *solid = [[UIView alloc] initWithFrame:someFrame]; 
solid.backgroundColor = [UIColor greyColor]; 

E quindi aggiungere la vista a qualsiasi visualizzazione secondaria che si desidera mostrare il colore solido.

(Cioè, ovviamente solo se è questo che stai cercando di ottenere. Forse non sei)