UITableView重绘问题

时间:2011-07-17 12:31:32

标签: iphone objective-c uitableview

我有一个UITableView在重新加载时会显示一些非常奇怪的行为。由于某种原因,表视图的某些边框只是丢失(即使我从未修改它们),但显示的单元格标签是正确的。

如果我只是重新加载一行,则此行会丢失其边框。如果我重新加载整个表格,整个表格就会失去边界。

我使用白色背景,单元格也有白色背景,UITableView使用组样式。

我之前没有见过这样的行为 - 这是一个错误吗?

以下是我设置表格的方法:

settingsController.view.backgroundColor = [UIColor whiteColor];

_settingsTable = [[UITableView alloc] initWithFrame:[UIApplication sharedApplication].keyWindow.frame style:UITableViewStyleGrouped];
_settingsTable.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_settingsTable.delegate = self;
_settingsTable.dataSource = self;
_settingsTable.backgroundView = nil;

[settingsController.view addSubview:_settingsTable];

通过这个简单的代码将单元格变为白色:

cell.backgroundView = nil;
cell.backgroundColor = [UIColor whiteColor];

enter image description here

从上面的屏幕截图中可以看出,重新加载单元格后,体积单元格丢失了边框。有谁知道发生了什么事?

编辑:以下是我解决这个问题的方法:

UITableView似乎存在错误。您可能知道,UITableView并不关心backgroundColor属性,因为它的背景是在一个单独的视图中加载的,默认情况下是一个纹理图像。通过将其设置为null,表视图显示显示错误。

我通过创建一个单独的白色视图来修复此问题 - 现在它可以正常工作。

UIView*whiteBg = [[UIView alloc] initWithFrame:_settingsTable.frame];
whiteBg.backgroundColor = [UIColor whiteColor];

_settingsTable.backgroundView = whiteBg;

[whiteBg release];

1 个答案:

答案 0 :(得分:-1)

不要将表格的背景视图设置为零。将backgroundColor设置为[UIColor clearColor]

可以实现类似的效果

同样适用于UITableViewCell。