2010-02-16 10 views
21

Mam UILabel w UITableView. Oto kod mam napisane w cellForRowAtIndexPathUstawianie przezroczystego tła dla UILabel dla aplikacji 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;  

Moim zamiarem było ustawić tło komórki i UILabel jako przezroczysty.

Ale to nie działa. może ktoś mi powiedzieć co mi brakuje tutaj

Dzięki

Sandeep

Odpowiedz

74

Zmień następujący wiersz:

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

do tego:

label.backgroundColor = [UIColor clearColor]; 
+0

Teraz, gdy już wskazał nam we właściwym kierunku (dzięki!) Dodam, że 'label.backgroundColor = nil; 'jest łatwiejszy do zapamiętania i robi to samo. (Kolor BG jest właściwością nadklasy, UIView, dla klasy ref, "Wartość domyślna to zero, co powoduje, że kolor tła jest przezroczysty." Podklasa UILabel prawdopodobnie początkowo ustawia ją na biały, dlatego należy jawnie zmienić z powrotem do zera/wyczyść.) – Wienke

+1

Podczas testów okazuje się jednak, że powinieneś trzymać się oryginalnej odpowiedzi oden. Niwelowanie koloru tła działa na początku dobrze, ale jeśli później zmienisz tekst etykiety, nowy tekst zostanie * nałożony * na stary. Bardzo dziwne. – Wienke

+0

Ustawienie wartości zerowej było również moim pierwszym domysłem, ale spowodowało, że cała etykieta (tekst i tło) zmieniła się całkowicie na czarny. [UIColor clearColor] działał idealnie. –

2

Dla osób korzystających Xamarin .iOS to oczywiście:

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

Aby ustawić clearBackGround Kolor na etykiecie

Powiązane problemy