UITableView背景颜色始终灰色在iPad上
当我为我的UITableView
设置backgroundColor
,它在iPhone(设备和模拟器)上工作正常,但不在iPad模拟器上。 相反,我为我设置的任何颜色(包括groupTableViewBackgroundColor
获得浅灰色的背景。
重现步骤:
- 创build一个新的基于导航的项目。
- 打开RootViewController.xib并将表视图样式设置为“分组”。
- 将此响应者添加到RootViewController中:
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; }
- select模拟器SDK 3.2,编译并运行。
- 你会得到一个黑色的背景(设备和模拟器)。
- 在项目树中select你的目标。
- 点击项目:升级iPad的当前目标。
- build立并运行。
- 你会得到一个浅灰色的背景。
- 将桌面视图样式恢复为“平原”,您将获得黑色背景。
谢谢你的帮助!
尝试其中之一。
[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检查器设置背景颜色。