Recientemente he migrado un código al nuevo SDK de iOS 11 beta 5.
Ahora obtengo un comportamiento muy confuso de UITableView. La vista de tabla en sí no es tan elegante. Tengo celdas personalizadas, pero en su mayor parte es solo por su altura.
Cuando presiono mi controlador de vista con vista de tabla, obtengo una animación adicional donde las celdas "se desplazan hacia arriba" (o posiblemente se cambia todo el marco de vista de tabla) y hacia abajo a lo largo de la animación de navegación push / pop. Por favor ver gif:
Creo manualmente tableview
en el loadView
método y configuro restricciones de diseño automático para que sean iguales a la vista inicial, final, superior e inferior de la vista de tabla. La supervista es la vista raíz del controlador de vista.
Ver el código de inserción del controlador es muy estándar: self.navigationController?.pushViewController(notifVC, animated: true)
El mismo código proporciona un comportamiento normal en iOS 10.
¿Podrías indicarme qué está mal?
EDITAR: He hecho un controlador de vista de tabla muy simple y puedo reproducir el mismo comportamiento allí. Código:
class VerySimpleTableViewController : UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 4
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = String(indexPath.row)
cell.accessoryType = .disclosureIndicator
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let vc = VerySimpleTableViewController.init(style: .grouped)
self.navigationController?.pushViewController(vc, animated: true)
}
}
EDICIÓN 2: Pude limitar el problema a mi personalización de UINavigationBar. Tengo una personalización como esta:
rootNavController.navigationBar.setBackgroundImage(createFilledImage(withColor: .white, size: 1), for: .default)
donde createFilledImage
crea una imagen cuadrada con un tamaño y color determinados.
Si comento esta línea, recupero el comportamiento normal.
Agradecería cualquier comentario sobre este asunto.
navigationBar.isTranslucent
a false
, si no funciona bien.