videos reproduccion quitar pausa musica funciona desactivar como automatica activar iphone ios objective-c interface-builder

iphone - reproduccion - el UITableViewCell sin salida de la cola tiene un diseño incorrecto hasta que se desplaza(usando la reproducción automática)



reproduccion automatica youtube (2)

Tengo una subclase UITableViewCell personalizada a la que se le han aplicado restricciones de reproducción automática en Interface Builder. La celda contiene varias vistas, incluido un UITextField .

De manera relevante, el tamaño de UITextField está restringido de tal manera que hay un espacio horizontal predeterminado entre él y la vista siguiente.

La célula se instancia como sigue:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"ProgressCell"; ProgressCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath] cell.textField.text = @"Some string that is different for each cell"; return cell; }

Cuando aparece la celda por primera vez, el UITextField supera el marco correcto y aparece detrás de la vista UIView a su derecha. Sin embargo, cuando muevo la celda fuera de la pantalla, hago una pausa y luego retrocedo, el texto se trunca correctamente.

A continuación se muestra un ejemplo (en la segunda edición).

He intentado llamar a [cell setNeedsLayout] y [cell setNeedsDisplay] para la celda en cellForRowAtIndexPath , así como a realizarlas después de un retraso. Ninguno es efectivo.

¿Qué está haciendo el desplazamiento de la pantalla que hace que la celda aparezca correctamente y cómo puedo replicar esto o solucionar el problema subyacente?

EDITAR:

Vocación

[self.tableView reloadData]; [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];

para recargar la celda, parece que el diseño aparezca correctamente la primera vez.

Sin embargo, ahora se interrumpe (ocasionalmente) en el desplazamiento (es decir, cuando se desplaza hacia atrás, las restricciones de diseño ahora no se aplican correctamente).

Al llamar a [cell setNeedsLayout] en cellForRowAtIndexPath no se soluciona este problema.

EDIT2:

La celda superior, como se muestra here , apareció correctamente (como lo hace la celda inferior) hasta que me desplace por la pantalla. Desde entonces desapareció.

Esto refleja el problema desde la primera edición: es la segunda representación que es el problema (¿me hace pensar que podría tener algo que ver con reutilizar la celda?)


De acuerdo con este problema de UILabel GitHub de varias líneas , este es un error persistente de iOS.

Encontré que en iOS 9+, esta situación ocurre principalmente en el modo de edición, con mucha impredecibilidad.

La siguiente solución solo funciona parcialmente: requiere volver a dibujar el UITableView dos veces y aún no cubre todos los escenarios.

override func viewDidLoad() { super.viewDidLoad() tableView.setNeedsLayout() tableView.layoutIfNeeded() tableView.reloadData() }

Notas:

  • Usar UITextView es una excelente alternativa a varias líneas de UILabel , sin el error. UITextView no muestra ninguna de las otras rarezas de IULabel , como errores de alineación o flickering .
  • También hay una solución alternativa en SO-25947146 , que no funcionó para mí, pero vale la pena mencionarlo.
  • Parece ocurrir prominentemente cuando self.tableView.editing es true
  • El uso de valores bajos para tableView.estimatedRowHeight reduce la ocurrencia
  • Demostración del error en SwiftArchitect/TableViewControllerRowHeightBug

Si nombra una propiedad en una subclase textLabel o textLabel , IB ignorará las restricciones que ha especificado y las anulará por defecto, sin advertencias.

Este es el caso incluso en celdas diseñadas en IB con el estilo Personalizado, que no tienen propiedades visibles textLabel o detailTextLabel .

Esto también sucede si agrega una propiedad de tipo UIImageView en una subclase de UITableViewCell y imageView .