utilizzo - restrizioni iphone ios 12




UITableViewCell mostra lo sfondo bianco e non può essere modificato su iOS7 (10)

Aveva un problema simile, doveva

  1. Imposta blu come selezioneStyle e
  2. aggiungilo al codice per correggerlo

    override func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    
      var bgColorView: UIView = UIView()
      bgColorView.backgroundColor = UIColor(red: (76.0 / 255.0), green: (161.0 / 255.0), blue: (255.0 / 255.0), alpha: 1.0)
      bgColorView.layer.masksToBounds = true
      tableView.cellForRowAtIndexPath(indexPath)!.selectedBackgroundView = bgColorView
      return true
    }
    

Ho implementato una classe di celle di visualizzazione tabella personalizzata che eredita da UITableViewCell . La tableview contiene un'immagine di sfondo, quindi voglio che lo sfondo della cella sia trasparente. Sembra fantastico prima di iOS7.

Tuttavia, in iOS7, la cella viene sempre visualizzata con uno sfondo bianco.

Anche per Xcode7, 2015, c'è un bug nello storyboard : devi impostare il colore di sfondo di una cella nel codice.


Come dichiarato da Apple DOC ( riferimento alla classe UITableViewCell ):

... In iOS 7, le celle hanno uno sfondo bianco per impostazione predefinita ; nelle versioni precedenti di iOS, le celle ereditano il colore di sfondo della vista tabella allegata. Se vuoi cambiare il colore di sfondo di una cella, fallo in tableView: willDisplayCell: forRowAtIndexPath: metodo della tua vista tabella delegato.

Quindi, nel mio caso, per mostrare celle con sfondo trasparente, è sufficiente implementare il metodo delegate nel controller della vista tabella come di seguito:

- (void)tableView:(UITableView *)tableView
  willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
  [cell setBackgroundColor:[UIColor clearColor]];
}

Nota : come @null ha detto, "... sembra che ci sia un bug nel builder dell'interfaccia ..." , non sono completamente sicuro se ha il bug, ma sembra così perché il suo commento ha ottenuto diversi voti. Quindi potrebbe esserci qualcosa di sbagliato se usi IB. :)


Il colore di sfondo predefinito di UITableViewCell in iOS 7 è bianco.

Devi impostare la proprietà backgroundColor da qualche parte nel tuo codice. Ad esempio, impostalo dopo aver appena creato la cella.

cell.backgroundColor = [UIColor clearColor];

In realtà ho scoperto che il problema derivava dal colore di sfondo di UITableView che non era impostato per cancellare. Se cambi il colore di sfondo di UITableViewCell per cancellare e stai ancora vedendo bianco, assicurati che il colore di sfondo di UITableView sia impostato per cancellare (o qualunque cosa tu voglia).

[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor clearColor]];

In Swift

tableView.backgroundView = nil
tableView.backgroundColor = UIColor.clearColor()

La risposta accettata non ha risolto il problema per me. Dovevo fare questo:

  1. Nel builder dell'interfaccia, seleziona la vista tabella. Quindi, dall'ispettore degli attributi, dalla sezione Visualizza , impostare lo sfondo su trasparente (opacità 0%).

  1. Dal metodo cellForRowAtIndexPath della classe di origine dati della tabella:

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
        reuseIdentifier:CellIdentifier];
    cell.backgroundColor = [UIColor clearColor]; //Make cell transparent
    

Per me impostazione cell.backgroundColor = cell.contentView.backgroundColor; in tableView:willDisplayCell:forRowAtIndexPath: o tableView:cell:forRowAtIndexPath: fatto il lavoro.

Questo perché ho impostato il colore di sfondo di contentView in Interface Builder come desiderato.


Puoi anche usare il codice colore per rendere redditizia la tua UITableView Cell.

[cell setBackgroundColor:[self colorWithHexString:@"1fbbff"]];

Questo è il codice per applicare il metodo del codice colore:

-(UIColor*)colorWithHexString:(NSString*)hex
{
    NSString *cString = [[hex stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];


    if ([cString length] < 6) return [UIColor grayColor];

    if ([cString hasPrefix:@"0X"]) cString = [cString substringFromIndex:2];

    if ([cString length] != 6) return  [UIColor grayColor];

    NSRange range;
    range.location = 0;
    range.length = 2;
    NSString *rString = [cString substringWithRange:range];

    range.location = 2;
    NSString *gString = [cString substringWithRange:range];

    range.location = 4;
    NSString *bString = [cString substringWithRange:range];

    unsigned int r, g, b;
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[NSScanner scannerWithString:gString] scanHexInt:&g];
    [[NSScanner scannerWithString:bString] scanHexInt:&b];

    return [UIColor colorWithRed:((float) r / 255.0f)
                         green:((float) g / 255.0f)
                          blue:((float) b / 255.0f)
                         alpha:1.0f];
}

Quando aggiungi oggetti UI a una cella, Xcode 5 / IOS 7 aggiunge una nuova "Visualizzazione contenuto" che sarà la superview di tutti gli elementi nella cella. Per impostare il colore di sfondo della cella, impostare il colore di sfondo di questa vista contenuto. Le soluzioni di cui sopra non ha funzionato per me, ma questo ha funzionato bene per me.


Scrivi questo nel tuo metodo cellForRowAtIndexPath prima di restituire la cella;

cell.backgroundColor = [UIColor clearColor];

Soluzione Swift 1.2:

Aggiungi semplicemente una definizione esplicita per il colore di sfondo della tua cella in questo modo:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    // Configure the cell...
    cell.backgroundColor = UIColor.clearColor()

    return cell
}




ios7