Frage

Als ich die backgroundColor für meinen UITableView gesetzt funktioniert es gut auf dem iPhone (Gerät und Simulator), aber nicht auf dem iPad-Simulator. Stattdessen erhalte ich einen hellgrauen Hintergrund für jede Farbe, die ich einschließlich groupTableViewBackgroundColor gesetzt.

Schritte zum Reproduzieren:

  1. Erstellen Sie ein neues Navigations-basiertes Projekt.
  2. Öffnen RootViewController.xib und den Tabellen-Ansicht Stil „gruppiert“ gesetzt.
  3. Fügen Sie diesen Responder zum RootViewController:
    - (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];
    }
  4. Wählen Sie Simulator SDK 3.2, erstellen und ausführen.
  5. Sie erhalten einen schwarzen Hintergrund erhalten (Gerät und Simulator).
  6. Wählen Sie ein Ziel im Projektbaum.
  7. Klicken Sie auf Projekt:. Erweitern Aktuelles Ziel für iPad
  8. erstellen und ausführen.
  9. Sie erhalten einen hellgrauen Hintergrund erhalten.
  10. Revert die Tabellenansicht Stil Plain und Sie werden einen schwarzen Hintergrund erhalten.

Vielen Dank für Ihre Hilfe!

War es hilfreich?

Lösung

Versuchen Sie eine davon.

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

Andere Tipps

Vielen Dank für diese Lösung. Ich bewerben ich diese auf einer UITableView Eigenschaft mit IBOutlet in einem UIViewController und es funktioniert gut, wie:

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

Auf iPad die backgroundView Eigenschaft scheint verwendet werden, um die graue Hintergrundfarbe für gruppierte Tabellen zu erstellen. So zum Ändern der Hintergrundfarbe für gruppierte Tabellen auf dem iPad sollte man die nil Eigenschaft backgroundView aus und legen Sie die backgroundColor auf der gewünschten Tabellenansicht.

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

Ich denke, es ist erwähnenswert, dass, wie von Xcode 6.1 und iOS 8.1, die speziell für iPad (wenn Sie auch auf Set Zelle Hintergrund wollen) scheint es, dass Sie Tabelle Hintergrund und Zell Hintergrund festlegen.

Zum Beispiel auf einem iPhone Storyboard Sie eine Zelle klare Farbe einstellen, dann Set Hintergrundbild der Tabelle programmatisch für eine transparente Tabelle mit Hintergrundbild. Allerdings, wenn Sie die Zellen diese gleiche Konfiguration auf dem iPad sehen sind nicht klar. Die Zellen müssen eingestellt werden programmatisch für iPad löschen.

versucht background und Ausblick für den gedeckten Tisch, hatte kein Glück (Xcode 5 iOS7.1 iPad Simulator), sah OK für iPhone, aber hellgraue Hintergrundfarbe auf dem iPad ...

Arbeiten mit Backgroundcolor für die Zelle selbst fixiert das für mich auf 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;

}

Wenn Ihre Anwendung zielt sowohl auf iPhone und iPad Sie es wie folgt tun:

[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

Beachten Sie, dass die Tableview alloc nicht über Autorelease für ARC.

Wenn Sie eine UIViewController zu einem anderen UIViewController hinzufügen Sie müssen auch Ihre Sicht der Hintergrund zu Clear neben UITableView setzen oder sonst werden Sie einen weißen Hintergrund statt hellgrau bekommen.

if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) {
    [myViewController.myTableView setBackgroundView:nil];
}
myViewController.myTableView.backgroundColor = [UIColor clearColor];
myViewController.view.backgroundColor = [UIColor clearColor];
  • Simulieren iPad 2
  • Laufen iOS 7.1 bis 8.3
  • Einbau von XCode 6.3

Keine der oben für meine UIViewController- arbeitete> UITableView eine einzige XIB angegeben ist. Was tat Arbeit wurde die gesamte Einrichtung in ein Storyboard zu bewegen, und die Hintergrundfarbe Einstellen des IB Inspektoren.

Ich habe auch diese Art von Problem. Die UITableView Hintergrundfarbe wird immer sein, egal, was ich groupTableViewBackgroundColor gesetzt.

Das Symptom ist wie dieses Problem - UITableView wird das Rücksetzen der Hintergrundfarbe vor Ansicht erscheint

Nachdem ich die Hintergrundfarbe in init Funktion gesetzt ist, ist es richtig. In viewDidLoad und viewWillAppear Stadium ist es richtig. Doch in viewDidAppear, die Hintergrundfarbe wird wieder auf die Standardfarbe.

Die akzeptierte Antwort jetzt nicht funktionieren.

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

Hier ist meine Lösung. So stellen Sie die Hintergrundfarbe des Tableview in viewDidLoad Funktion , statt init oder viewWillAppear.

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.backgroundColor = [UIColor clearColor];
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top