Ответ 1
Попробуйте один из них.
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];
Когда я устанавливаю backgroundColor
для моего UITableView
, он отлично работает на iPhone (устройство и симулятор), но НЕ на симуляторе iPad. Вместо этого я получаю светло-серый фон для любого цвета, который я установил, включая groupTableViewBackgroundColor
.
Шаги для воспроизведения:
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor blackColor];
}
Спасибо за вашу помощь!
Попробуйте один из них.
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];
Большое спасибо за это решение. Я применил это свойство UITableView с IBOutlet в UIViewController и хорошо работает как:
[panelTable setBackgroundView:nil];
[panelTable setBackgroundView:[[[UIView alloc] init] autorelease]];
[panelTable setBackgroundColor:UIColor.clearColor]; // Make the table view transparent
На 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];
}
Я думаю, стоит отметить, что с Xcode 6.1 и iOS 8.1, особенно для iPad (если вы хотите также установить фон ячейки), вам необходимо установить фон таблицы и фон ячейки.
Например, на раскадровке iPhone вы можете установить ячейку для очистки цвета, а затем установить фоновое изображение таблицы программно для прозрачной таблицы с фоновым изображением. Однако, если вы хотите просмотреть эту же конфигурацию на iPad, ячейки не будут ясными. Ячейкам необходимо будет установить программно для iPad.
попробовал настройку backgroundColor и View для таблицы, не повезло (Xcode 5 iOS7.1 iPad simulator), выглядел ОК для 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 не существует автоопределения для ARC.
Если вы добавляете UIViewController в другой UIViewController, вам также нужно установить фон представления clearColor в дополнение к UITableView, иначе вы получите белый фон вместо светло-серого.
if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) {
[myViewController.myTableView setBackgroundView:nil];
}
myViewController.myTableView.backgroundColor = [UIColor clearColor];
myViewController.view.backgroundColor = [UIColor clearColor];
Ни один из вышеперечисленных действий не использовался для моего UIViewController- > UITableView, указанного с использованием одного XIB. Что сделало работу, переместив всю установку в раскадровку и установив цвет фона с помощью инспектора IB.