Estamos colocando una etiqueta temporal sobre nuestro UITableViewController view cuando necesitamos mostrar un mensaje de estado. La vista va directamente debajo de la barra de navegación UIN. Esto funciona bien, pero statusView se desplaza con la tabla y desaparecerá a medida que la tabla se desplaza hacia arriba. ¿Cómo puede arreglar la posición de statusView incluso cuando la tabla se desplaza?

Actualización :

Lo que casi funciona inspirado por otra pregunta es usar el método TableViewDelegate para arreglar la posición statusView:

override func scrollViewDidScroll(_ scrollView: UIScrollView) {
    var newFrame = statusView.frame
    newFrame.origin.x = 0
    newFrame.origin.y = self.tableView.contentOffset.y + self.navigationController!.navigationBar.bounds.height 
    statusView.frame = newFrame
}

Coloca nuestra barra statusView en una posición fija pero está parcialmente debajo de la barra de navegación. Parece que solo necesitamos ajustar la lógica newFrame.origin.y ...

Actualización 2 :

Según https://stackoverflow.com/a/40202931/47281 solo necesita incluir la barra de estado:

    newFrame.origin.y = self.tableView.contentOffset.y + self.navigationController!.navigationBar.frame.size.height + UIApplication.shared.statusBarFrame.height 
0
Marcus Leon 31 mar. 2017 a las 04:38

2 respuestas

La mejor respuesta

Por actualizaciones, la solución anterior se inspiró en otra pregunta - utilizamos el TableViewDelegate scrollViewDidScroll para arreglar la posición:

override func scrollViewDidScroll(_ scrollView: UIScrollView) {
    var newFrame = statusView.frame
    newFrame.origin.x = 0
    newFrame.origin.y = self.tableView.contentOffset.y + self.navigationController!.navigationBar.bounds.height 
    statusView.frame = newFrame
}
0
Community 23 may. 2017 a las 12:17

Puede intentar usar una subclase ViewController y agregarle UITableView en lugar de subclasificar UITableViewController.

0
emiledecosterd 31 mar. 2017 a las 19:42