2009-10-13 10 views
25

Tengo un problema donde mi UITableView (estilo de grupo) tiene una "punta" negra encima de su esquina redondeada.Esquinas negras en UITableView Group Style

Soy la creación de los antecedentes de la tableview así:

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

Y mi vista de tabla termina pareciéndose a esto:

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

Alguna idea de cómo puedo deshacerme de esos puntos negros?

+3

sólo para comprobar, funciona correctamente cuando se especifica un color, como '[UIColor bluecolor]' o '[UIColor groupTableViewBackgroundColor] ¿? Además, lo que haces probablemente crea una pérdida de memoria: en su lugar, debes usar '[UIColor colorWithPatternImage:]'. –

Respuesta

54

Tengo el mismo problema. Cuando establezco el color claro por xib, tengo la esquina posterior ¡La solución es establecerlo por código!

(El mismo problema con el constructor de interfaces existen para webviews)

+0

Esto funcionó para mí cuando nada más lo hizo. Establezca el color de fondo en IB para el color de vista de tabla agrupada (predeterminado). Luego, en el código, establece el color en clearColor. También tengo las celdas marcadas opaque = NO y clearsContextBeforeDrawing = NO, pero esas configuraciones por sí solas no cambiaron nada hasta que agregué el clearColor por el código – Bdebeez

+0

Funcionó para mí. Gracias Amine. – iOSDevSF

+0

funcionó para mí también :) pero es un comportamiento extraño ... –

1

Para evitar las esquinas negras, debe asegurarse de que las UITableViewCells no son opacas. Parece que está utilizando celdas de tabla de estilos personalizados y el valor predeterminado para opaco es SÍ. Acceda a Interface Builder y desmarque la casilla opaca si la celda de la tabla se configuró en un archivo XIB. O use el setter setOpaque:NO para cambiar el valor.

Debido a que la vista de celda de la tabla todavía tiene un marco rectangular, incluso con las esquinas redondeadas, la vista de celda y no la vista de tabla real está causando esas esquinas negras.

+0

No está en mi Mac en este momento, así que lo veré más tarde. Pero si no son opacos, ¿las celdas de la mesa no serán transparentes y por lo tanto no blancas? – ThaDon

+0

Ser no opaco no es lo mismo que tener un valor alfa <1.0; es más una optimización para el sistema de dibujo, para que el sistema operativo sepa si tiene que hacer una composición más costosa, o simplemente puede asumir que la vista llena todo su marco. –

+0

Esto funcionó para mí en un fondo no rojo en la vista propietaria. Cuando el blanco las esquinas negras reaparecen. (En el simulador, de todos modos.) –

3

En caso de que ya no eran conscientes, there's another neat technique se puede utilizar para hacer fondos personalizados para UITableViews:

No es tan simple como establecer el fondo como que estás haciendo, pero te da mucho más flexibilidad y puede escalar a cualquier tamaño de tabla.

0

Supongo que está relacionado con algo que estás haciendo en las celdas personalizadas de la vista de tabla. Es posible que desee experimentar estableciendo el color de fondo de la celda en [UIColor clearColor].

0

Creo que debe establecer el color de fondo de su tabla como clearColor e inicializar su vista con la imagen de fondo.

Entonces definitivamente no mostrará las esquinas negras. Pero también no se olvide de establecer el color de fondo de la celda como el color blanco

16

Prueba esto en el método de su controlador viewDidLoad:

meetingTableView.backGroundColor = [UIColor ClearColor]; 

espero que ayude!

0

La respuesta arriba referida (establezca los antecedentes de tableView en [UIColor clearColor]) puede no funcionar para usted si usted es como yo y nunca usa el UITableViewController, sino que coloca una UITableView dentro de un UIViewController.

En este caso, no es el TableView el que necesita tener un fondo claro, sino la vista que contiene la vista de tabla.

Esto no es intuitivo, pero funciona para mí. En constructor de interfaces que sólo puede establecer de la vista padre color de fondo para aclarar el color, o usted podría hacer lo mismo en código en viewDidLoad con:

self.view.backgroundColor = [UIColor clearColor]; 

Estoy adivinando la razón de las esquinas negras algo en el interior la optimización de gráficos, y establecer el fondo claro lo corrige.

+0

Esa respuesta funcionó para mí en iOS4 (estuvo bien en iOS5) –

2

Tal vez si se pone yourTableViewOutlet.backgroundView=nil;

+0

Una breve explicación sería genial. –

3

Usted obtendrá esquinas negras en UITableView Estilo Grupo si establece el color de fondo para aclarar el color en XI ter.

En lugar de tratar este código para eliminar esquinas negras en UITableView Grupo Estilo

tableViewObject.backgroundColor=[UIColor clearColor];