在模型 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
}
正如你所看到的,我将backgroundColor设置为clearColor,但是当我编译并运行代码时,我总是看到表格后面有灰色背景:
我不明白我做错了什么(听起来很愚蠢,我知道),我曾经有完全相同的代码并且它工作得很好。我正在使用 iOS SDK 4.2.1 进行编译
您还需要在最近(自 3.2)版本的 iOS 上将 UITableView 的 backgroundView 属性设置为 nil。
因此,添加...
tbView.backgroundView = nil;
...应该解决你的问题。
也就是说,如果你想保持与 3.2 之前的设备的兼容性,你应该在调用它之前通过
instancesRespondToSelector
方法检查它是否存在。
确保您设置了以下 3 个选项:
tbView.opaque = NO;
tbView.backgroundColor = [UIColor clearColor];
tbView.backgroundView = nil;
尝试
tbView.backgroundView = nil;
我尝试改变故事板。 它在
中运行良好tbView.backgroundColor = .white
斯威夫特 5.x 我最近遇到了这个问题。 旧的解决方案有所帮助(就我而言,它是 - 仅按此顺序):
tableView.backgroundView = nil
tableView.isOpaque = false
tableView.backgroundColor = .clear