La subclass UIView no puede cambiar de background negro

He creado una subview de UIView para hacer algunos dibujos, los dibujos funcionan bien en el método drawRect de mi subclass, sin embargo, no puedo cambiar el color de background de la vista. Un poco de Google me dice que no he establecido el marco para la vista, pero no estoy completamente seguro de cómo hacerlo. Probé dos cosas:

Creo la vista en Storyboard y la agrego a mi controller de vista, luego la declaro como una propiedad en el file de encabezado y los vinculo. Puedo sintetizar la propiedad en la parte superior del file de implementación y en el método viewDidLoad, agrego:

[myView setBackgroundColor: [UIColor whiteColor]]; 

El background de la vista sigue siendo negro.

También probé:

 ViewSubclass *v = [[ViewSubclass alloc] initWithFrame: self.view.frame]; v.backgroundColor = [UIColor whiteColor]; myView = v; 

En vano.

¿Qué estoy haciendo mal?

ACTUALIZACIÓN: ¡Este es el código que uso para dibujar en la vista, en caso de que ocurra algo allí!

 - (void)drawRect:(CGRect)rect { CGFloat height = self.bounds.size.height; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextClearRect(context, rect); CGContextSetFillColorWithColor(context, [UIColor grayColor].CGColor); CGFloat barWidth = 30; int count = 0; for (NSNumber *num in samples) { CGFloat x = count * (barWidth + 10); CGRect barRect = CGRectMake(x, height - ([num floatValue] * height), barWidth, [num floatValue] * height); CGContextAddRect(context, barRect); count++; } CGContextFillPath(context); } 

Simplemente crea un set de barras en la pantalla, de diferentes alturas.

CGContextClearRect De los documentos:

Si el context proporcionado es un context de window o bitmap, Quartz borra efectivamente el rectángulo. Para otros types de context, Quartz llena el rectángulo de una manera dependiente del dispositivo. Sin embargo, no debe usar esta function en contexts que no sean contexts de window o bitmap.

Puede ser que este despeje borre toda la vista sin tener en count el color de background que configuró

No puedo agregar comentarios debido a mi nivel bajo, pero la pregunta me viene a la mente, ¿has agregado a tu UIView para ver el controller?

me gusta

 [self.view addSubview:v]; 

EDITAR:

Lamento haber comprendido que la segunda opción se agregó a la vista de manera pragmática.

¿Estás agregando la vista en el file de encabezado? Si es así, es posible que deba asegurarse de que las coorderadas del marco están visibles y de que la vista está en la parte superior, también hacen que la nueva vista sea ligeramente más pequeña para ver si realmente se está creando:

 UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)]; [self.view addSubview: myView]; [self.view bringSubviewToFront:myView]; 

También puede cambiar el color de background de la vista principal para ver si realmente se está creando la nueva vista. Por ejemplo:

 [self.view setBackgroundColor:[UIColor grayColor]]; 

Si el color cambia para su vista principal, entonces el problema es que su nueva vista no se está o no se lleva al frente. ¡Háganos saber cómo va!

En el punto donde hacer

 [myView setBackgroundColor: [UIColor whiteColor]]; 

verifique si myView no es nil en el depurador