2010-02-16 11 views
21

Tengo un UILabel en UITableView. Aquí está el código que he escrito en cellForRowAtIndexPathconfiguración de fondo transparente para UILabel para la aplicación de iphone

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectMake(30.0, 5.0, 250.0, 35.0) reuseIdentifier:CellIdentifier] autorelease]; 
    } 


    CGRect rect = CGRectMake(30.0, 5.0, 250.0, 35.0); 
    UILabel *label = [[UILabel alloc] initWithFrame:rect]; 

    label.opaque = NO; 
    label.font = [UIFont systemFontOfSize:14]; 
    label.numberOfLines = 2; 
    label.textAlignment = UITextAlignmentCenter;    
    label.textColor = [UIColor darkGrayColor]; 
    label.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]; 
    [label setText:@"Test Message"];  

    [cell addSubview:label]; 
    [label release]; 
    cell.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone;  

Mi intención era establecer el fondo de la celda y UILabel tan transparente.

Pero no está funcionando. Puede alguien decirme lo que me falta aquí

Gracias

Sandeep

Respuesta

74

Cambie la línea siguiente:

label.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]; 

a esto:

label.backgroundColor = [UIColor clearColor]; 
+0

Ahora que nos has apunta en la dirección correcta (gracias!) Voy a añadir que 'label.backgroundColor = nil; 'es más fácil de recordar y hace lo mismo. (El color BG es una propiedad de la superclase, UIView. Por referencia de clase, "El valor predeterminado es nulo, lo que da como resultado un color de fondo transparente." La subclase UILabel probablemente la establece inicialmente en blanco, por lo que debe cambiar explícitamente vuelve a cero/claro.) – Wienke

+1

Al realizar la prueba, sin embargo, resulta que debe seguir con la respuesta original de Oden. Anulando el backgroundColor funciona bien al principio, pero si posteriormente cambias el texto de la etiqueta, el nuevo texto * se superpondrá * en el anterior. Muy raro. – Wienke

+0

Establecer el valor en nil fue también mi primera suposición, pero resultó en que toda la etiqueta (texto y fondo) se volviera completamente negra. [UIColor clearColor] funcionó a la perfección. –

2

Para aquellos que utilizan Xamarin .iOS es obviamente:

UILabel myLabel = new UILabel(); 
myLabel.Text = "Hello world!"; 
myLabel.BackgroundColor = UIColor.Clear; 
1
[label setBackGroundColor:[UIColor clearColor]]; 

Para establecer el clearBackGround color para una etiqueta

Cuestiones relacionadas