当我为backgroundColor
设置UITableView
时,它在iPhone(设备和模拟器)上正常工作,但不适用于iPad模拟器。相反,我为我设置的任何颜色(包括groupTableViewBackgroundColor
)获得浅灰色背景。
重现的步骤:
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor blackColor];
}
感谢您的帮助!
答案 0 :(得分:245)
尝试其中一种。
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];
答案 1 :(得分:30)
非常感谢这个解决方案。 我在UIViewController中使用IBOutlet将它应用于UITableView属性,它的工作原理如下:
[panelTable setBackgroundView:nil];
[panelTable setBackgroundView:[[[UIView alloc] init] autorelease]];
[panelTable setBackgroundColor:UIColor.clearColor]; // Make the table view transparent
答案 2 :(得分:6)
在iPad上,backgroundView
属性似乎用于为分组表创建灰色背景颜色。因此,要更改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];
}
答案 3 :(得分:2)
我认为值得注意的是,从Xcode 6.1和iOS 8.1开始,特别是对于iPad(如果你想设置单元格背景),你似乎必须设置表格背景和单元格背景。
例如,在iPhone故事板上,您可以设置一个单元格以清除颜色,然后以编程方式为表格设置背景图像,以获得带有背景图像的透明表格。但是,如果您要在iPad上查看相同的配置,则单元格将不清晰。需要将单元格设置为以编程方式清除iPad。
答案 4 :(得分:1)
尝试为表设置backgroundColor和View,没有运气(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;
}
答案 5 :(得分:0)
如果你的应用程序同时针对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没有ARC的自动释放功能。
答案 6 :(得分:0)
如果要将UIViewController添加到另一个UIViewController,除了UITableView之外,您还需要将视图的背景设置为clearColor,否则您将获得白色背景而不是浅灰色。
if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) {
[myViewController.myTableView setBackgroundView:nil];
}
myViewController.myTableView.backgroundColor = [UIColor clearColor];
myViewController.view.backgroundColor = [UIColor clearColor];
答案 7 :(得分:0)
以上都不适用于使用单个XIB指定的UIViewController-&gt; UITableView。工作是将整个设置移动到故事板中,并使用IB检查器设置背景颜色。
答案 8 :(得分:0)
我也遇到这种问题。无论我设置了什么,UITableView
背景颜色将始终为groupTableViewBackgroundColor
。
症状类似于此问题-UITableView is resetting its background color before view appears
在init
函数中设置背景颜色后,它是正确的。在viewDidLoad
和viewWillAppear
阶段,它是正确的。但是,在viewDidAppear
中,背景色被重置为其默认颜色。
接受的答案现在不起作用。
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[UIView alloc] init]];
这是我的解决方案。 只需在viewDidLoad
函数中设置tableView的背景颜色,而不是init
或viewWillAppear
。
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.backgroundColor = [UIColor clearColor];
}