Вопрос

Когда я устанавливаю backgroundColor для моего UITableView это прекрасно работает на iPhone (устройстве и симуляторе), но НЕ на симуляторе iPad.Вместо этого я получаю светло-серый фон для любого заданного мной цвета, включая groupTableViewBackgroundColor.

Шаги по воспроизведению:

  1. Создайте новый проект на основе навигации.
  2. Откройте RootViewController.xib и установите для стиля представления таблицы значение "Сгруппированный".
  3. Добавьте этот ответчик в RootViewController:

    - (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];
    }
  4. Выберите Simulator SDK 3.2, соберите и запустите.
  5. Вы получите черный фон (устройства и симулятора).
  6. Выберите свою цель в дереве проекта.
  7. Нажмите на Проект :Обновите текущую цель для iPad.
  8. Создайте и запустите.
  9. Вы получите светло-серый фон.
  10. Верните стиль представления таблицы к обычному, и вы получите черный фон.

Спасибо за вашу помощь!

Это было полезно?

Решение

Попробуй один из них.

[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];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top