2011-09-26 31 views
5

EDITAR: La gente sigue visitando esta publicación que no tiene mucha información buena así que pondré esto aquí para ayudarlos chicos: Intente establecer la propiedad backgroundColor de su UIView. Por ejemplo:Establecer el color de fondo de un UIVIew

myView.backgroundColor = [UIColor blueColor]; 

Asegúrese de que su visión ha creado una instancia y si se controla mediante un xib o guión gráfico en absoluto, asegúrese de que la vista ya se ha cargado (de lo contrario lo que se establece en el constructor de interfaces se convertirá en el color de fondo). Si eso no funciona, algo extraño está sucediendo. Sigue buscando, esta publicación no te ayudará.

Original post:

Tengo una NSObject con una propiedad UIView. Sobre todo uso esta UIView para mostrar una imagen, pero en algunos casos, quiero establecer el color de fondo de la misma. Sin embargo, cada vez que intento establecer el color de fondo, el color permanece tan claro. Aparecen imágenes u otras subvistas pero el fondo no. ¿Cómo puedo cambiar el color de fondo de una UIView? Aquí es parte de mi código:

He aquí un ejemplo en el que necesito una imagen en mosaico: (esto es, en una función llamada después añado el UIView a la opinión del viewcontroller)

(la imagen es una propiedad UIView)

picture.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Tile.png"]]; 

también he tratado en otros casos:

picture.backgroundColor = [UIColor colorWithRed:0 green:1 blue:1 alpha:0.5]; 

en ambos casos, el fondo sigue siendo clara.

+0

Todavía resolvió lo que estaba buscando, estableciendo el fondo :) –

Respuesta

0

No estoy seguro de cuál era el problema, aunque sé que no fue uno de los problemas que ha respondido, pero la última vez que fui a trabajar en el problema noté que estaba trabajando. Gracias por tu ayuda de todos modos.

7

¿Está asignando e inicializando el UIView mencionado anteriormente? El problema debería ser que probablemente se haya olvidado de hacer eso para la imagen llamada UIView.

sólo trato:

picture = [[UIView alloc] initWithFrame:CGRectMake(10,10,200,200)]; 
picture.backgroundColor = [UIColor redColor]; 

Suponiendo que la imagen ya ha sido declarado de Ivar tipo UIView en el archivo de interfaz.

+0

Gracias, pero se ha asignado en una función llamada antes de este. – WolfLink

2

alpha tiene un rango válido de 0.0 a 1.0. Lo tienes establece en 50, intente 1 vez:

picture.backgroundColor = [UIColor colorWithRed:0 green:1 blue:1 alpha:1]; 
+0

No hay problema con el alfa. Eso no está causando el problema. Simplemente ajústelo a lo que el OP ha especificado y le da un color azulado claro. – Bourne

+0

Me refiero a 0.5 en lugar de 50. Además, poner 50 no lo hará colapsar, funcionará igual que si le diera 1. – WolfLink

+0

@Wolflink su pregunta no decía que se estaba rompiendo. Si obtiene una excepción, debería haberlo dicho. – progrmr

1

Si usted es bueno en el uso de valor RGB puede utilizar

picture.backgroundColor = [UIColor colorWithRed:0 green:1 blue:1 alpha:1]; 

De lo contrario usar UIColor para establecer el color de Backgound

picture.backgroundColor = [UIColor greenColor]; 
+0

Estoy pensando más en algo como [UIColor colorWithPatternImage: [UIImage imageNamed: @ "Rope.png"]]; pero estoy comenzando a simplificar para tratar de eliminar posibles factores del problema. – WolfLink

+0

Si va a utilizar colorWithPatternImage: puede encontrar una fuga. – Anand

0

Probablemente valga la pena comprobar si está cambiando el color de fondo en el hilo principal o no. Si cambia el color de fondo en una cola de distribución (que no sea la cola principal), a veces no se puede reflejar en la apariencia de la interfaz de usuario.

-1

Su código parece totalmente válido y debería cambiar el color de fondo.Es posible que desee comprobar que la propiedad picture.opaque está configurada en YES (es el valor predeterminado a menos que su código lo modifique). Pero un problema más probable es que el marco de la vista tenga un tamaño cero. Aconsejaría verificar esto. Por ejemplo, por la tala que:

NSLog(@"Frame size: width=%f, height=%f", picture.frame.size.width, picture.frame.size.height); 

Saludos

0

puede utilizar el inspector de atributos para cambio de color. Seleccione el color para 'Antecedentes'.

Cuestiones relacionadas