wake-up-neo.com

UITableView backgroundColor ist auf dem iPad immer grau

Wenn ich backgroundColor für mein UITableView einstelle, funktioniert dies auf dem iPhone (Gerät und Simulator), aber NICHT auf dem iPad-Simulator. Stattdessen bekomme ich einen hellgrauen Hintergrund für jede Farbe, die ich eingestellt habe, einschließlich groupTableViewBackgroundColor.

Schritte zum Reproduzieren:

  1. Erstellen Sie ein neues navigationsbasiertes Projekt.
  2. Öffnen Sie RootViewController.xib und setzen Sie den Tabellenansichtsstil auf "Gruppiert".
  3. Fügen Sie diesen Responder zum RootViewController hinzu:

    - (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 (Gerät und Simulator).
  6. Wählen Sie in der Projektnavigation Ihr Ziel aus.
  7. Klicken Sie auf Projekt: Aktuelles Ziel für iPad aktualisieren.
  8. Bauen und ausführen.
  9. Sie erhalten einen hellgrauen Hintergrund.
  10. Setzen Sie den Tabellenansichtsstil auf Normal und Sie erhalten einen schwarzen Hintergrund.

Danke für Ihre Hilfe!

128
rjobidon

Probieren Sie eines davon aus.

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

Vielen Dank für diese Lösung. Ich habe dies auf eine UITableView-Eigenschaft mit IBOutlet in einem UIViewController angewendet und es funktioniert wie folgt:

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

Auf dem iPad wird die Eigenschaft backgroundView verwendet, um die graue Hintergrundfarbe für gruppierte Tabellen zu erstellen. Um die Hintergrundfarbe für gruppierte Tabellen auf dem iPad zu ändern, sollten Sie nil die Eigenschaft backgroundView auslassen und dann backgroundColor für die gewünschte Tabellenansicht festlegen.

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

Ich halte es für erwähnenswert, dass ab Xcode 6.1 und iOS 8.1, speziell für das iPad (wenn Sie auch den Zellenhintergrund festlegen möchten), Tabellenhintergrund UND Zellenhintergrund festgelegt werden müssen.

Auf einem iPhone-Storyboard können Sie beispielsweise festlegen, dass eine Zelle die Farbe löscht, und dann programmgesteuert das Hintergrundbild der Tabelle für eine transparente Tabelle mit Hintergrundbild festlegen. Wenn Sie jedoch dieselbe Konfiguration auf dem iPad anzeigen würden, wären die Zellen nicht klar. Die Zellen müssen programmgesteuert für das iPad gelöscht werden.

2
WiseGuy

habe versucht, backgroundColor und View für die Tabelle einzustellen, hatte kein Glück (Xcode 5 iOS7.1 iPad Simulator), sah für das iPhone in Ordnung aus, aber hellgraue Hintergrundfarbe auf dem iPad ...

die Arbeit mit backgroundColor für die Zelle selbst hat dies für mich in iOS 7.1 4/2014 behoben

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

}

1
cube108

Ich habe auch ein solches Problem. Die UITableView Hintergrundfarbe wird immer groupTableViewBackgroundColor sein, egal was ich eingestellt habe.

Das Symptom ist wie folgt - ITableView setzt die Hintergrundfarbe zurück, bevor die Ansicht angezeigt wird

Nachdem ich die Hintergrundfarbe in der Funktion init eingestellt habe, ist sie korrekt. In viewDidLoad und viewWillAppear ist es richtig. In viewDidAppear wird die Hintergrundfarbe jedoch auf die Standardfarbe zurückgesetzt.

Die akzeptierte Antwort funktioniert jetzt nicht.

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

Hier ist meine Lösung. Legen Sie einfach die Hintergrundfarbe der tableView in der Funktion viewDidLoad fest und nicht in init oder viewWillAppear.

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.backgroundColor = [UIColor clearColor];
}
0
elegance66
  • IPad simulieren 2
  • Ausführen von iOS 7.1 bis 8.3
  • Erstellt aus XCode 6.3

Keines der oben genannten Verfahren funktionierte für meinen UIViewController-> UITableView, der mit einer einzelnen XIB angegeben wurde. Das ganze Setup wurde in ein Storyboard verschoben und die Hintergrundfarbe mit dem IB-Inspektor festgelegt.

0
QED

Wenn Sie einen UIViewController zu einem anderen UIViewController hinzufügen, müssen Sie zusätzlich zu UITableView auch den Hintergrund Ihrer Ansicht auf clearColor setzen. Andernfalls wird statt hellgrau ein weißer Hintergrund angezeigt.

if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) {
    [myViewController.myTableView setBackgroundView:nil];
}
myViewController.myTableView.backgroundColor = [UIColor clearColor];
myViewController.view.backgroundColor = [UIColor clearColor];
0
irmu

Wenn Ihre Anwendung sowohl auf das iPhone als auch auf das iPad abzielt, können Sie dies folgendermaßen 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-Zuweisung keine automatische Freigabe für ARC hat.

0
gmogames