2009-10-13 16 views
25

Ho un problema in cui il mio UITableView (stile di gruppo) ha un "tip" nero sopra l'angolo arrotondato.Angoli neri su UITableView Group Style

Sono la creazione di sfondo del Tableview in questo modo:

[meetingTableView setBackgroundColor:[[UIColor alloc] initWithPatternImage:[[UIImage alloc] initWithContentsOfFile:@"background.png"]]]; 

E la mia vista tabella finisce per assomigliare a questo:

black pointy edge on rounded corner http://papernapkin.org/pastebin/resource/images/imageEntryId/6487

Tutte le idee come posso sbarazzarsi di quei punti neri?

+3

solo per controllare, funziona correttamente quando si specifica un colore, come '[UIColor blueColor]' o '[UIColor groupTableViewBackgroundColor] '? Inoltre, probabilmente si crea una perdita di memoria: si dovrebbe invece usare '[UIColor colorWithPatternImage:]'. –

risposta

54

Ho lo stesso problema. Quando ho impostato il colore chiaro da xib, ho l'angolo posteriore La soluzione è impostarlo per codice!

(lo stesso problema con Interface Builder esistono per visualizzazioni)

+0

Questo ha funzionato per me quando nient'altro ha funzionato. Impostare il colore di sfondo in IB sul colore della vista tabella raggruppata (impostazione predefinita). Quindi, nel codice, imposta il colore su clearColor. Ho anche le celle contrassegnate opaque = NO e clearsContextBeforeDrawing = NO, ma quelle impostazioni da sole non hanno modificato nulla fino a quando non ho aggiunto clearColor tramite il codice – Bdebeez

+0

Worked for me. Grazie Amine. – iOSDevSF

+0

ha funzionato anche per me :) ma è uno strano comportamento .. –

1

Per evitare gli angoli neri è necessario assicurarsi che UITableViewCells non sia opaco. Sembra che tu stia utilizzando celle di tabelle di stili personalizzate e il valore predefinito per opaco è SÌ. O accedi a Interface Builder e deseleziona la casella di controllo opaca se la cella della tabella è stata impostata in un file XIB. Oppure utilizzare il setter setOpaque:NO per modificare il valore.

Poiché la vista cella della tabella ha ancora una cornice rettangolare anche con gli angoli arrotondati, la vista della cella e non la vista della tabella effettiva sta causando quegli angoli neri.

+0

Non al mio Mac al momento, quindi lo controllerò più tardi. Ma se non sono opachi, le celle della tabella non diventeranno trasparenti e quindi non bianche? – ThaDon

+0

Essere non-opachi non è la stessa cosa di avere un valore alfa <1.0; è più un'ottimizzazione del sistema di disegno, per far sapere al sistema operativo se deve fare compositing più costoso, o può semplicemente presumere che la vista riempia tutto il suo frame. –

+0

Questo ha funzionato per me su uno sfondo non rosso nella vista proprietaria. Quando il bianco riappare gli angoli neri. (Nel simulatore, comunque.) –

3

Nel caso in cui non foste già a conoscenza, there's another neat technique è possibile utilizzare per fare sfondi personalizzati per UITableViews:

Non è così semplice come impostare lo sfondo, come si sta facendo, ma ti dà molto di più flessibilità e può adattarsi a qualsiasi dimensione del tavolo.

0

La mia ipotesi è che sia correlato a qualcosa che si sta facendo nelle celle di visualizzazione tabella personalizzate. Potresti voler provare a impostare il colore di sfondo della cella su [UIColor clearColor].

0

Penso che dovresti impostare il colore di sfondo della tua tabella come clearColor e inizializzare la tua vista con l'immagine di sfondo.

Quindi non mostrerà sicuramente gli angoli neri. Ma anche non dimenticare di impostare il colore del tuo cellulare sfondo come il colore bianco

16

Prova questo nel metodo di viewDidLoad del controller:

meetingTableView.backGroundColor = [UIColor ClearColor]; 

Speranza che aiuta!

0

La risposta sopra votata (imposta lo sfondo di tableView su [UIColor clearColor]) potrebbe non funzionare per te se sei come me e non utilizzare mai UITableViewController, invece di mettere un UITableView all'interno di un UIViewController.

In questo caso non è la tabellaView che deve avere uno sfondo chiaro, ma la vista che contiene la vista tabella.

Questo non è intuitivo, ma funziona per me. Nel costruttore di interfaccia si può solo impostare il colore di sfondo della vista padre per eliminare il colore, o si potrebbe fare lo stesso in codice viewDidLoad con:

self.view.backgroundColor = [UIColor clearColor]; 

sto cercando di indovinare il motivo per gli angoli neri è qualcosa circa l'interno ottimizzazione della grafica e l'impostazione dello sfondo chiaro lo risolve.

+0

Questa risposta ha funzionato per me su iOS4 (andava bene su iOS5) –

2

Forse se si mette yourTableViewOutlet.backgroundView=nil;

+0

Una breve spiegazione sarebbe grandiosa. –

3

Otterrete angoli nere su UITableView Style Group se si imposta il colore di sfondo per cancellare il colore in XIB.

Invece provare questo codice per la rimozione di angoli nero su UITableView Style Group

tableViewObject.backgroundColor=[UIColor clearColor];