UITableView背景颜色始终灰色在iPad上

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

重现步骤:

  1. 创build一个新的基于导航的项目。
  2. 打开RootViewController.xib并将表视图样式设置为“分组”。
  3. 将此响应者添加到RootViewController中:
     - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; } 
  4. select模拟器SDK 3.2,编译并运行。
  5. 你会得到一个黑色的背景(设备和模拟器)。
  6. 在项目树中select你的目标。
  7. 点击项目:升级iPad的当前目标。
  8. build立并运行。
  9. 你会得到一个浅灰色的背景。
  10. 将桌面视图样式恢复为“平原”,您将获得黑色背景。

谢谢你的帮助!

尝试其中之一。

 [myTableView setBackgroundView:nil]; [myTableView setBackgroundView:[[[UIView alloc] init] autorelease]]; 

非常感谢这个解决scheme。 我在一个UIViewController的IBOutlet UITableView属性上应用了它,它的效果就像:

 [panelTable setBackgroundView:nil]; [panelTable setBackgroundView:[[[UIView alloc] init] autorelease]]; [panelTable setBackgroundColor:UIColor.clearColor]; // Make the table view transparent 

在iPad上, backgroundView属性似乎用于为分组表创build灰色背景色。 所以要改变iPad上分组表格的背景颜色,应该nil backgroundView属性,然后在所需的表格视图上设置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]; } 

我认为值得注意的是,从Xcode 6.1和iOS 8.1开始,专门针对iPad(如果您还想设置单元格背景),似乎您必须设置表格背景和单元格背景。

例如,在iPhone故事板上,您可以设置单元格以清除颜色,然后以编程方式设置表格的背景图像,以获得具有背景图像的透明表格。 但是,如果您在iPad上查看相同的configuration,则单元格不会清晰。 单元格需要设置为清除编程的iPad。

尝试设置backgroundColor和视图的表,没有运气(Xcode 5 iOS7.1的iPad模拟器),看起来确定为iPhone,但浅灰色的背景色在iPad上… … –

使用backgroundColor为单元格本身在iOS 7.1 4/2014上为我解决了这个问题

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"ViewSomeTriggerCell"; // get a cell or a recycled cell sictVCViewSomeTriggerCell *cellTrigger = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; // put a picture and a word in the cell (positions set in .xib) NSString * tname = [self.fetchedTriggersArray objectAtIndex:indexPath.row]; cellTrigger.imageTrigger.image = [UIImage imageNamed:@"icon_appicon.png"]; cellTrigger.labelName.text = tname; // set background color, defeats iPad wierdness // http://stackoverflow.com/questions/2688007/uitableview-backgroundcolor-always-gray-on-ipad // clearColor is what I wanted, and it worked, also tested with purpleColor cellTrigger.backgroundColor =[UIColor clearColor]; return cellTrigger; 

}

如果您的应用程序同时针对iPhone和iPad,则可以这样做:

 [myTableView setBackgroundColor:[UIColor clearColor]]; // this is for iPhone if ([[UIDevice currentDevice] userInterfaceIdiom] != UIUserInterfaceIdiomPhone) { [myTableView setBackgroundView:nil]; [myTableView setBackgroundView:[[UIView alloc] init]]; } // this is for iPad only 

注意TableView的alloc没有autorelease的ARC。

如果您将UIViewController添加到另一个UIViewController,除了UITableView之外,还需要将视图的背景设置为clearColor,否则您将获得白色背景而不是浅灰色。

 if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) { [myViewController.myTableView setBackgroundView:nil]; } myViewController.myTableView.backgroundColor = [UIColor clearColor]; myViewController.view.backgroundColor = [UIColor clearColor]; 
  • 模拟iPad 2
  • 运行iOS 7.1到8.3
  • 由XCode 6.3构build

以上都没有为我的UIViewController-> UITableView指定使用单个XIB。 什么工作是将整个设置移动到故事板,并使用IB检查器设置背景颜色。