Tengo una subclase personalizada UITableViewCell
. Establecí el contentView
de mi subclase de celda en una clase personalizada UIView
en la cual anulo -drawRect:
y hago todo el dibujo allí.UITableViewCell: ¿Cómo evitar el fondo de selección azul sin borking isSelected property?
También, estoy configurando cell.contentView.opaque = NO
para lograr transparencia en ciertas áreas de la celda (desafortunadamente, una imagen de fondo detrás de la tabla debe mostrarse a través de cada celda en ciertas partes para lograr un efecto estilístico. Sé que esto es una actuación golpear, debe ser así).
Problema: Sigo dibujando el fondo degradado bastante azul predeterminado detrás de mi celda (en las áreas transparentes) cuando se selecciona o resalta (al presionar). Esto está oscureciendo la imagen detrás de la mesa, lo cual es malo.
Objetivo: Para evitar que el fondo azul de la pendiente de aparecer, pero aún así ser capaz de inspeccionar los cell.isSelected
y cell.isHighlighted
inmuebles de dentro -[MyContentView drawRect:]
para determinar cómo dibujar mi propia selección personalizada/resaltado.
Lo que he intentado:
establecer
cell.selectionStyle = UITableViewCellSelectionStyleNone
tiene el efecto deseado de prevenir el bonito fondo azul de la selección de gradiente, sino que también evita loscell.isSelected
ycell.isHighlighted
propiedades de estar ajustado correctamente, lo que significa que no puedo hacer mi propia selección personalizada/culminante dibujoestablecer
cell.selectionBackgroundView = nil
ycell.backgroundView = nil
en el método-init
o-prepareForReuse
de la célula no impide la selección de gradiente azul de nuevo plantaestablecer
cell.selectionBackgroundView = nil
en el método-[MyContentView -drawRect:]
hace tienen el efecto deseado de prevenir el fondo de selección azul de la pendiente, pero que parece muy jankyprimordial - [UITableViewCell setSelected: animado:] para ser un no -op. esto no tiene el efecto deseado de prevenir el azul gradiente de selección de fondo
Jason, gracias! su sugerencia ha hecho el truco. un par de notas: - No estoy seguro de cómo recopiló esa información del artículo, ya que no fue uno de los puntos importantes. pero buen trabajo :) - ese artículo es definitivamente muy informativo. desafortunadamente, también parece un poco engañoso ya que ignora el caso común donde se necesita más personalización celular, en cuyo caso es mejor crear una subclase y reemplazar la -drawRect de contentView: para lograr un desplazamiento rápido como se explica aquí: http: // blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview/ –
Solo para aclarar esto más para lectores futuros, en lugar de establecer cualquier cell.selectionStyle, establezca cell.selectedBackgroundView en un UIView - I set a una UIView con los mismos límites que mi celda, y luego configure alfa a 0.5 para resaltar la celda pero aún así dejar todo visible. ¡No olvides llamar a [self setNeedsDisplay] en tu método setSelected! –
@KendallHelmstetterGelner Todo con este método funciona, excepto que a pesar de configurar 'alpha' en 0.5 y llamar' setNeedsDisplay', el color de fondo seleccionado es completamente blanco y cubre la vista de la celda cuando se selecciona (a pesar de haber configurado 'UIView' /' selectedBackgroundView' s color de fondo a 'clearColor'). ¿Algunas ideas? – sooper