UITableView backgroundColor всегда серый на iPad
-
30-09-2019 - |
Вопрос
Когда я устанавливаю backgroundColor
для моего UITableView
это прекрасно работает на iPhone (устройстве и симуляторе), но НЕ на симуляторе iPad.Вместо этого я получаю светло-серый фон для любого заданного мной цвета, включая groupTableViewBackgroundColor
.
Шаги по воспроизведению:
- Создайте новый проект на основе навигации.
- Откройте RootViewController.xib и установите для стиля представления таблицы значение "Сгруппированный".
- Добавьте этот ответчик в RootViewController:
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; }
- Выберите Simulator SDK 3.2, соберите и запустите.
- Вы получите черный фон (устройства и симулятора).
- Выберите свою цель в дереве проекта.
- Нажмите на Проект :Обновите текущую цель для iPad.
- Создайте и запустите.
- Вы получите светло-серый фон.
- Верните стиль представления таблицы к обычному, и вы получите черный фон.
Спасибо за вашу помощь!
Решение
Попробуй один из них.
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];
Другие советы
Большое спасибо для этого решения. Я применил это на свойство UiableView с 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 Restradboard вы можете установить ячейку для очистки цвета, затем установить фоновое изображение таблицы программно для прозрачной таблицы с фоновым изображением. Однако, если вы должны были просмотреть эту же конфигурацию на 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
Обратите внимание, что Olloc TableView не имеет автокресла для дуги.
Если вы добавляете UiviewController к другому UiviewController, вам также нужно установить свой фон вашего представления в ClearColor в дополнение к UiableView или вы получите белый фон вместо светлого серого.
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
Ничего из вышеперечисленного не работало для моего UIViewController-> UiableView, указанного с использованием одного XIB. Что работала на всю работу в раскадровку, и устанавливая цвет фона с помощью инспектора IB.
Я также получил эту проблему. То UITableView
Фон цвет будет всегда groupTableViewBackgroundColor
Неважно, что я устанавливаю.
Симптом похож на этот вопрос - UiableView сбрасывает свой цвет фона до появления
После того, как я установил цвет фона в init
Функция, это правильно. В viewDidLoad
а также viewWillAppear
Этап, это правильно. Однако внутри viewDidAppear
, Цвет фона сбрасывается до его цвета по умолчанию.
Принятый ответ не работает сейчас.
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[UIView alloc] init]];
Вот мое решение. Просто установите цвет фона TableView в viewDidLoad
функция скорее, чем init
или viewWillAppear
.
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.backgroundColor = [UIColor clearColor];
}