Domanda

Quando ho impostato il backgroundColor per il mio UITableView funziona bene su iPhone (dispositivo e simulatore), ma non sul simulatore iPad. Invece ho un fondo grigio chiaro per qualsiasi colore ho impostato compreso groupTableViewBackgroundColor.

I passaggi per riprodurre:

  1. Creare un nuovo progetto di navigazione basato su.
  2. Apri RootViewController.xib e impostare la visualizzazione stile tabella per "raggruppato".
  3. Aggiungi il risponditore al RootViewController:
    - (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];
    }
  4. Seleziona Simulator SDK 3.2, costruire e gestire.
  5. Otterrete uno sfondo nero (dispositivo e simulatore).
  6. Selezionare la destinazione nella struttura del progetto.
  7. Fare clic su Project:. Aggiornamento obiettivo attuale per iPad
  8. Compilare ed eseguire.
  9. Otterrete uno sfondo grigio chiaro.
  10. Ripristina lo stile di visualizzazione della tabella a Pianura e si otterrà uno sfondo nero.

Grazie per il vostro aiuto!

È stato utile?

Soluzione

Prova una di queste.

[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];

Altri suggerimenti

Grazie mille per questa soluzione. Ho applicato questo su una proprietà UITableView con IBOutlet in UIViewController e funziona bene come:

[panelTable setBackgroundView:nil];
[panelTable setBackgroundView:[[[UIView alloc] init] autorelease]];
[panelTable setBackgroundColor:UIColor.clearColor]; // Make the table view transparent

Sul iPad la proprietà backgroundView sembra essere utilizzati per creare il colore di sfondo grigio per le tabelle raggruppati. Così, per cambiare il colore di sfondo per le tabelle raggruppati su iPad si dovrebbe nil la proprietà backgroundView e quindi impostare il backgroundColor sulla vista tabella desiderata.

- (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];
}

Credo che vale la pena notare che a partire da Xcode 6.1 e iOS 8.1, specificatamente per iPad (se si desidera impostare sfondo delle cellule così) sembra che è necessario impostare sfondo tavolo e sfondo della cella.

Per esempio, su un iPhone storyboard è possibile impostare una cella per il colore chiaro, allora l'immagine di sfondo set di tavolo di programmazione per un tavolo trasparente immagine di sfondo. Tuttavia, se si dovesse vedere questa stessa configurazione su iPad le cellule non sarebbe chiaro. Le cellule dovranno essere impostato per cancellare di programmazione per iPad.

provato a fissare backgroundColor e Visualizza per la tavola, non ha avuto fortuna (Xcode 5 iOS7.1 iPad simulatore), OK cercato iPhone, ma il colore di sfondo grigio chiaro su iPad ...

lavorare con backgroundColor per la cellula stessa risolto questo per me su 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;

}

Se i vostri obiettivi di applicazioni iPhone e iPad si può fare in questo modo:

[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

Si noti che l'alloc TableView non ha autorelease per ARC.

Se si sta aggiungendo un UIViewController ad un altro UIViewController è anche necessario impostare lo sfondo di immagine per clearColor oltre alle UITableView, altrimenti si otterrà uno sfondo bianco al posto del grigio chiaro.

if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) {
    [myViewController.myTableView setBackgroundView:nil];
}
myViewController.myTableView.backgroundColor = [UIColor clearColor];
myViewController.view.backgroundColor = [UIColor clearColor];
  • Simulazione iPad 2
  • L'esecuzione iOS 7.1 a 8.3
  • Costruito da XCode 6.3

Nessuno dei precedenti ha lavorato per la mia UIViewController-> UITableView specificato utilizzando un unico XIB. Che cosa ha fatto il lavoro stava muovendo l'intero setup in uno storyboard, e l'impostazione del colore di sfondo utilizzando la finestra di ispezione IB.

Ho anche avuto questo tipo di problema. Il colore di sfondo UITableView sarà sempre groupTableViewBackgroundColor non importa quello che ho impostato.

Il sintomo è come questo problema - UITableView sta reimpostando la sua colore di sfondo prima vista appare

Dopo ho impostato il colore di sfondo nella funzione init, che sia corretto. In viewDidLoad e stadio viewWillAppear, che sia corretto. Tuttavia, nel viewDidAppear, il colore di sfondo viene ripristinato al suo colore di default.

La risposta accettata non funziona ora.

[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[UIView alloc] init]];

Ecco la mia soluzione. Basta impostare il colore di sfondo del tableView in funzione viewDidLoad , piuttosto che init o viewWillAppear.

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.backgroundColor = [UIColor clearColor];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top