2011-10-11 18 views
7

¿Hay una manera de conseguir bordes redondeados en UITableViewCell de una manera que:cómo obtener bordes redondeados en UITableViewCell de manera que el usuario pueda seleccionar el color de fondo de la celda? (Pero no se utiliza el modo AGRUPADOS)

  1. permite color de fondo de células para ser usuario seleccionado/personalizado en tiempo de ejecución (células pueden no todos tienen el mismo color de fondo)
  2. no usar el UITableView "agrupadas" modo de

así que estoy asumiendo que esto significa que no puedo usar el enfoque de imagen normal aquí para obtener bordes redondeados, como en este caso lo haría no permite el requisito 1 anterior

+1

¿Hay alguna razón en particular para no usar el modo agrupado? – sosborn

+0

simplemente estoy teniendo los siguientes problemas con la animación de cambio de márgenes en el modo de grupo que parece que no puedo resolver, ¿por eso esperar que no agrupado sea mejor? http://stackoverflow.com/questions/7661054/how-to-fix-the-margin-adjustment-code-attached-for-a-grouped-uitableview – Greg

Respuesta

55

Bueno, parece que deberías intentar usar CALayer. Como UITableViewCell es una subclase UIView, puede manipular su propiedad CALayer.

Así, en primer lugar, asegúrese de #import <QuartzCore/QuartzCore.h>

luego hacer algo como, por ejemplo,

[cell.layer setCornerRadius:7.0f]; 
[cell.layer setMasksToBounds:YES]; 
[cell.layer setBorderWidth:2.0f]; 

cuando se crea la célula. (Si está intentando crear un efecto como en una tabla agrupada, supongo que querrá manipular solo la primera y la última celda). Esto debería dar a la celda esquinas redondeadas. Al manipular el CALayer, es posible que pueda crear el efecto que desee.

Además, consulte this answer para saber cómo hacerlo en solo algunas de las esquinas.

+0

gracias Matt - déjame echar un vistazo y probar esto (por el camino - usted no tiene ninguna buena idea sobre este tema separado/relacionado que no creo - http://stackoverflow.com/questions/7661054/how-to-fix-the-margin-adjustment-code-attached -for-a-grouped-uitableview) – Greg

+0

lo tengo Matthew - ta – Greg

+0

Matthew es correcto, pero simplemente establecer la esquina de la capaRadius y maskToBounds es suficiente. borderWidth te dará un borde alrededor de la imagen, que no pareces querer. Simplemente use: [cell.layer setCornerRadius: 10.0f]; [cell.layer setMasksToBounds: YES]; –

Cuestiones relacionadas