UITableView backgroundColor在iPad上始终为灰色

rjo*_*don 128 background-color uitableview ipad iphone-sdk-3.2

当我backgroundColor为我设置UITableView它在iPhone(设备和模拟器)上工作正常但不在iPad模拟器上.相反,我得到了我设置的任何颜色的浅灰色背景groupTableViewBackgroundColor.

重现步骤:

  1. 创建一个新的基于导航的项目.
  2. 打开RootViewController.xib并将表视图样式设置为"Grouped".
  3. 将此响应程序添加到RootViewController:

    - (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];
    }
    Run Code Online (Sandbox Code Playgroud)
  4. 选择Simulator SDK 3.2,构建并运行.
  5. 您将获得黑色背景(设备和模拟器).
  6. 在项目树中选择目标.
  7. 单击项目:升级iPad的当前目标.
  8. 建立并运行.
  9. 您将获得浅灰色背景.
  10. 将表格视图样式还原为Plain,您将获得黑色背景.

谢谢你的帮助!

dra*_*ard 245

尝试其中之一.

[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];
Run Code Online (Sandbox Code Playgroud)

  • 非常非常重要:这仅适用于SDK 3.2.为了向后兼容3.1.3.之前你必须检查表视图是否响应backgroundView属性:if([self.tableView respondsToSelector:@selector(backgroundView)])self.tableView.backgroundView = nil; 否则你的应用程序会崩溃并突然退出,你可以相信我! (30认同)
  • 我不知道是否有副作用但它有效!谢谢!self.tableView.backgroundView = nil; (3认同)

小智 30

非常感谢这个解决方案.我在UIViewController中使用IBOutlet将它应用于UITableView属性,它的工作原理如下:

[panelTable setBackgroundView:nil];
[panelTable setBackgroundView:[[[UIView alloc] init] autorelease]];
[panelTable setBackgroundColor:UIColor.clearColor]; // Make the table view transparent
Run Code Online (Sandbox Code Playgroud)

  • 冻火:实际上有.没有它,你会在表格单元边框中得到奇怪的绘图工件. (4认同)

小智 6

在iPad上,该backgroundView属性似乎用于为分组表创建灰色背景颜色.因此,要在iPad上更改分组表格的背景颜色,应该nilbackgroundView属性中删除,然后backgroundColor在所需的表格视图上进行设置.

- (void)viewDidLoad
{
    [super viewDidLoad];

    // If you need to support iOS < 3.2, check for the availability of the
    // backgroundView property.
    if ([self.tableView respondsToSelector:@selector(setBackgroundView:)]) {
        self.tableView.backgroundView = nil;
    }
    self.tableView.backgroundColor = [UIColor whiteColor];
}
Run Code Online (Sandbox Code Playgroud)