0

代码的相关部分在 - tableView:cellForRowAtIndexPath:

cell.textLabel.backgroundColor = [UIColor clearColor];
if (indexPath.row == 0) {
   cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",result.level]]];
} else {
   cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",indexPath.row+OFFSETTOFIRSTROW]]];
}
cell.backgroundView.alpha = 0.5;
cell.backgroundColor = [UIColor darkGrayColor];
if (totalPieces) {
   cell.textLabel.textColor = [UIColor colorWithRed:0.1 green:0.5 blue:0.1 alpha:1.0];
   cell.textLabel.shadowColor = [UIColor blackColor];
   if (indexPath.row == 0) {
      cell.textLabel.shadowColor = [UIColor colorWithRed:0.0 green:0.5 blue:0.0 alpha:1.0];
      cell.textLabel.textColor = [UIColor yellowColor];
      cell.backgroundView.alpha = 1.0;
   }
   cell.textLabel.shadowOffset = CGSizeMake(1.0, 1.0);
} else {
   cell.textLabel.textColor = [UIColor blackColor];
   cell.textLabel.shadowColor = nil;
}

本质上,表格的每一行都有自己的背景图像。这在 iOS6 中正确显示。但在 iOS7 中,发生的情况是图像被背景颜色覆盖。也就是说,直到用户滚动表格。当用户滚动表格时,它会正确显示。是什么让它在第一次演示时表现不同?我应该怎么做才能修复它?

预期的结果是覆盖整个单元格的深灰色背景色。上面是背景图像,它具有一定的透明度,背景颜色应该通过它显示出来。上面是文本,它具有透明背景,因此图像/单元格背景可以显示出来。

除非我听到别的声音,否则我想我会做的是堆叠两个图像而不是使用单元格背景。

4

3 回答 3

1

首先通过将其设置为 nil 来清除单元格的背景视图。然后设置自定义视图

[cell setBackgroundView: nil];
UIView* bview = [[UIView alloc] init];
bview.backgroundColor = [UIColor colorWithPatternImage:@"your image"];
[cell setBackgroundView:bview];

这对我有用.. 希望它也对你有用.. :-) 祝你好运..

于 2013-10-30T06:15:37.170 回答
0

这是 Apple 有意进行的更改。要修复它,请更改cell.backgroundColor[UIColor clearColor].

于 2013-10-30T03:09:24.850 回答
0

好的。这个解决方案有效,尽管也许有一个更有效的解决方案。

cell.textLabel.backgroundColor = [UIColor clearColor];
UIView *backgroundView = [[UIView alloc] initWithFrame:cell.bounds];
backgroundView.backgroundColor = [UIColor darkGrayColor];
if (indexPath.row == 0) {
   [backgroundView addSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",result.level]]]];
   cell.backgroundView = backgroundView;
} else {
   [backgroundView addSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",indexPath.row+OFFSETTOFIRSTROW]]]];
   cell.backgroundView = backgroundView;
}
于 2013-10-30T04:30:59.400 回答