2011-08-06 8 views
0

У меня проблема с цветом фона ячейки, который становится прозрачным. Я установил цвет фона uiview на серый цвет, цвет фона таблицы, чтобы очистить цвет, и я не установил цвет фона таблицы для подсветки. Но фон ячейки всегда кажется серым. Может ли кто-нибудь это понять.uitableviewcell цвет фона становится clearcolor

Благодаря

enter image description here

-(void)viewDidLoad 
{ 
    self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"TableBackGround.png"]]; 

    Acc_Details_TView.backgroundColor = [UIColor clearColor]; 
    Acc_Details_TView.rowHeight = 40; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"TransCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    switch ([Acc_Details_SegCtrl selectedSegmentIndex]) { 
     case 0:{ 
      if (cell == nil) { 
       cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"TableCell"] autorelease]; 
       cell.backgroundColor =[UIColor clearColor]; 
       cell.textLabel.font = [UIFont boldSystemFontOfSize:14]; 
       cell.detailTextLabel.text = [[transcationsList objectAtIndex:([indexPath row])] valueForKey:@"Date"]; 
       cell.detailTextLabel.font = [UIFont systemFontOfSize:12]; 
      } 
      NSString *titleName =[[transcationsList objectAtIndex:([indexPath row])] valueForKey:@"Title"] ; 
      if ([titleName length] > 19) { 
       cell.textLabel.text = [titleName substringWithRange:NSMakeRange(0, 20)];     
      } 
      else{ 
       cell.textLabel.text = titleName; 
      } 

      cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
      UILabel * acc_Amount = [[UILabel alloc] initWithFrame:CGRectMake(220, 5, 60,10)]; 
      acc_Amount.textAlignment = UITextAlignmentRight; 
      acc_Amount.backgroundColor = [UIColor clearColor]; 
      acc_Amount.text = [[transcationsList objectAtIndex:([indexPath row])] valueForKey:@"Amount"]; 
      acc_Amount.font = [UIFont boldSystemFontOfSize:14]; 
      [cell.contentView addSubview:acc_Amount]; 
      UILabel * balance_Amount = [[UILabel alloc] initWithFrame:CGRectMake(220, 23, 60,10)]; 
      balance_Amount.textAlignment = UITextAlignmentRight; 
      balance_Amount.text = @"$1234.50"; 
      balance_Amount.backgroundColor = [UIColor clearColor]; 
      balance_Amount.textColor = [UIColor grayColor]; 
      balance_Amount.font = [UIFont systemFontOfSize:12]; 
      [cell.contentView addSubview:balance_Amount]; 
      return cell;    
     } 
    } 
} 
+0

Изображение поможет. – Legolas

ответ

4

Ваши камеры не совсем прозрачны. Установка backgroundColor UITableView делает некоторые сумасшедшие недокументированные вещи. Лучший способ увидеть это, чтобы установить его в какой-то полупрозрачный цвет, как [UIColor colorWithWhite:0.5 alpha:0.5], с помощью которого вы получите что-то вроде этого:

weird table view

Чтобы исправить вашу проблему, вы должны установить contentView.backgroundColor ячейки и backgroundColors всех подзонов после установки tableView. Вот ваш cellForRowAtIndexPath: обновляется с этим:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"TransCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    UIColor *cellBackgroundColor = [UIColor whiteColor]; 

    switch ([Acc_Details_SegCtrl selectedSegmentIndex]) { 
     case 0:{ 
      if (cell == nil) { 
       cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"TableCell"] autorelease]; 
       cell.textLabel.font = [UIFont boldSystemFontOfSize:14]; 
       cell.detailTextLabel.text = [[transcationsList objectAtIndex:([indexPath row])] valueForKey:@"Date"]; 
       cell.detailTextLabel.font = [UIFont systemFontOfSize:12]; 
       cell.accessoryView.backgroundColor = cellBackgroundColor; 
       cell.backgroundView.backgroundColor = cellBackgroundColor; 
       cell.contentView.backgroundColor = cellBackgroundColor; 
       cell.textLabel.backgroundColor = cellBackgroundColor; 
       cell.detailTextLabel.backgroundColor = cellBackgroundColor; 
       UIView *backView = [[UIView alloc] initWithFrame:cell.frame]; 
       backView.backgroundColor = cellBackgroundColor; 
       cell.backgroundView = backView; 
       [backView release]; 
      } 
      NSString *titleName =[[transcationsList objectAtIndex:([indexPath row])] valueForKey:@"Title"] ; 
      if ([titleName length] > 19) { 
       cell.textLabel.text = [titleName substringWithRange:NSMakeRange(0, 20)];     
      } 
      else{ 
       cell.textLabel.text = titleName; 
      } 

      cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
      UILabel * acc_Amount = [[UILabel alloc] initWithFrame:CGRectMake(220, 5, 60,10)]; 
      acc_Amount.textAlignment = UITextAlignmentRight; 
      acc_Amount.backgroundColor = cellBackgroundColor; 
      acc_Amount.text = [[transcationsList objectAtIndex:([indexPath row])] valueForKey:@"Amount"]; 
      acc_Amount.font = [UIFont boldSystemFontOfSize:14]; 
      [cell.contentView addSubview:acc_Amount]; 
      UILabel * balance_Amount = [[UILabel alloc] initWithFrame:CGRectMake(220, 23, 60,10)]; 
      balance_Amount.textAlignment = UITextAlignmentRight; 
      balance_Amount.text = @"$1234.50"; 
      balance_Amount.backgroundColor = cellBackgroundColor]; 
      balance_Amount.textColor = [UIColor grayColor]; 
      balance_Amount.font = [UIFont systemFontOfSize:12]; 
      [cell.contentView addSubview:balance_Amount]; 
     } 
    } 
    return cell; 
} 
+0

Когда я использовал этот код, область вокруг шеврона по-прежнему кажется серым. Я попытался использовать cell.accessoryview.background = cellBackgroundColor, но он все еще не работал. Любая идея, что не так. Я использую стиль UITableViewCellStyleValue2. – pa12

+0

В этом случае вам нужно добавить 'cell.detailTextLabel.backgroundColor = cellBackgroundColor;'. Если он все еще не работает, можете ли вы загрузить скриншот? –

+0

После внесения изменений вы сказали. Я добавил изображение в код. Пожалуйста, взгляните на это. Вот как выглядит моя ячейка таблицы. – pa12

0

Я не понимаю вашего вопроса. Вы устанавливаете фон таблицы на серый, затем очищаете, но вы не устанавливаете его как ясный, а затем он выглядит серым, чего вы не хотели, даже если вы установили его как серый?

table.backgroundColor = [UIColor clearColor]; 
+0

Я установил свой цвет фона uiview в серый цвет и мой планшет, чтобы очистить цвет. – pa12

5

установка цвета фона вашей ячейки в методе

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 

, а не в методе cellForRowAtIndexPath: Try.

+0

Это устранило проблему для меня в прошлом, когда я столкнулся с этой проблемой. – mjdth

+0

Это работало, но проблема, которую я вижу, - это установить цвет числа ячеек, которые я указал в numberOfRowsInSection, но не все ячейки в представлении таблицы.Поэтому для меня половина из них окрашивается в белый цвет, а остальные выглядят серыми. – pa12

+0

Документация Apple ** специально ** говорит использовать этот метод, а не «cellForRowAtIndexPath». – yujean

Смежные вопросы