Para cualquier persona interesada en replicar esto, simplemente siga estos pasos:
- Crea un nuevo proyecto de iOS
- Abra el guión gráfico principal y elimine el predeterminado / inicial
UIViewController
- Arrastre un nuevo
UITableViewController
desde la Biblioteca de objetos
- Configúrelo como el controlador de vista inicial
- Alimente la tabla con algunos datos de prueba
Si sigue los pasos anteriores, cuando ejecute la aplicación, verá que nada, incluso ajustar las casillas de verificación de Xcode para "Extender bordes debajo de {Barras superiores, inferiores, opacas}" funciona para evitar que la primera fila aparezca debajo de la barra de estado, ni puedes abordar esto programáticamente.
Por ejemplo, en el escenario anterior, la siguiente tendrá ningún efecto:
// These do not work
self.edgesForExtendedLayout=UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars=NO;
self.automaticallyAdjustsScrollViewInsets=NO;
Este problema puede ser muy frustrante, y creo que es un error del lado de Apple, especialmente porque aparece en su propio cableado UITableViewController
de la biblioteca de objetos.
No estoy de acuerdo con todos los que están tratando de resolver esto usando cualquier forma de "Números Mágicos", por ejemplo, "use un delta de 20px". Este tipo de programación estrechamente acoplada definitivamente no es lo que Apple quiere que hagamos aquí.
He descubierto dos soluciones a este problema:
Preservación de la UITableViewController
escena :
si desea mantener el UITableViewController
en el guión gráfico, sin colocarlo manualmente en otra vista, puede incrustarlo UITableViewController
en un UINavigationController
(Editor> Incrustar en> Controlador de navegación) y desmarcar "Muestra la barra de navegación" en el inspector . Esto resuelve el problema sin necesidad de ajustes adicionales, y también conserva su UITableViewController
escena en el guión gráfico.
Usando AutoLayout e incrustando UITableView
en otra vista (creo que así es como Apple quiere que hagamos esto) : cree
un vacío UIViewController
y arrastre el suyo UITableView
. Luego, arrastre Ctrl y arrastre desde su UITableView
hacia la barra de estado. Cuando el mouse llegue a la parte inferior de la barra de estado, verá una burbuja de Autolayout que dice "Guía de diseño superior". Suelte el mouse y elija "Espaciado vertical". Eso le indicará al sistema de diseño que lo coloque justo debajo de la barra de estado.
He probado ambas formas en una aplicación vacía y ambas funcionan. Es posible que deba hacer algunos ajustes adicionales para que funcionen para su proyecto.