UITableView背景颜色不会改变

Rob*_*bin 18 iphone cocoa-touch uitableview

在模型UIViewController中,我有以下loadView实现(一切都是以编程方式创建的):

- (void)loadView {

    // Add Basic View
    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 540, 620)];
    myView.backgroundColor = [UIColor clearColor];
    self.view = myView;
    [myView release];

    // Add NavigationBar

    // Add a BG image

    // Add Table
    UITableView *tbView = [[UITableView alloc] initWithFrame:CGRectMake(30, 80, 480, 250) style:UITableViewStyleGrouped];
    tbView.dataSource = self;
    tbView.delegate = self;
    tbView.scrollEnabled = NO;
    tbView.backgroundColor = [UIColor clearColor];
    [tbView reloadData];

    [self.view addSubview:tbView];
    [tbView release];

    // some more code
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我将backgroundColor设置为clearColor,但是当我编译并运行代码时,我总是看到桌子后面的灰色背景: 在此输入图像描述

我不明白我做错了什么(听起来很愚蠢,我知道),我曾经有过相同的代码而且工作得非常好.我正在使用iOS SDK 4.2.1进行编译

Joh*_*ker 43

您还需要在最近(从3.2)版本的iOS上将UITableView的backgroundView属性设置为nil.

因此,添加......

tbView.backgroundView = nil;
Run Code Online (Sandbox Code Playgroud)

......应该解决你的问题.

也就是说,如果你想保持与3.2之前的设备的兼容性,你应该instancesRespondToSelector在调用它之前通过该方法检查是否存在这种兼容性.


Wri*_*sCS 12

确保您设置了以下3个选项:

tbView.opaque = NO;
tbView.backgroundColor = [UIColor clearColor];
tbView.backgroundView  = nil;
Run Code Online (Sandbox Code Playgroud)

  • 这为我工作,但我不得不把代码在`viewWillAppear`.如果我把它放在`viewDidLoad`它没有工作. (2认同)