[tableView setBackgroundColor:[UIColor clearColor]]不能仅在带有iOS8的iPad上运行

时间:2014-10-28 07:14:51

标签: ios iphone ipad uitableview uibackgroundcolor

声明:

[tableView setBackgroundColor:[UIColor clearColor]];

no effect only on iPad especially with iOS8 with my existing App only。只是为了测试一下,我创建了一个新的测试应用程序,只是为了确定问题,但it works。我创建了一个UIViewController类,如下所示:

@implementation TestViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self.view setBackgroundColor:[UIColor purpleColor]];

    UITableView *aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 100, 300, 300) style:UITableViewStylePlain];

    [aTableView setBackgroundColor:[UIColor clearColor]];

    [self.view addSubview:aTableView];
}

@end

并使用以下语句推送ist:

[self.navigationController pushViewController:[TestViewController new] animated:YES];

推出新的测​​试应用程序结果(如我所愿):

enter image description here

但是从我现有的应用程序(我必须实现的真实应用程序)结果如下:

enter image description here

即使使用iOS 8 iPhone,在iOS7 iPhone和iPad下也能完美地清除背景色。我试图找到可影响外观的UIAppearance Proxy实现,但没有。

我已经尝试了几项SO提案,包括setting the backgroundView to nilthey haven't helped

为什么它正在使用新的测试应用程序以及它为什么不能使用我的现有应用程序?与UINavigationController有什么关系?

NB:请不要将其标记为重复,因为此处的问题与现有问题完全或略有不同。

2 个答案:

答案 0 :(得分:3)

这是细胞的颜色。所以你必须改变细胞的颜色。有关详细信息,请参阅

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.backgroundColor = [UIColor clearColor];
}

答案 1 :(得分:0)

UIView *bgView = [[UIView alloc] initWithFrame:cell.frame];
bgView.backgroundColor = [UIColor clearColor];
cell.backgroundView = bgView;

试试上面的代码