Para qualquer pessoa interessada em replicar isso, basta seguir estas etapas:
- Crie um novo projeto iOS
- Abra o storyboard principal e exclua o padrão / inicial
UIViewController
- Arraste um novo
UITableViewController
da Biblioteca de objetos
- Defina-o como o controlador de visualização inicial
- Alimente a tabela com alguns dados de teste
Se você seguir as etapas acima, ao executar o aplicativo, verá que nada, incluindo ajustar as caixas de seleção do Xcode para "Estender arestas sob as barras {superior, inferior e opaca}", impede que a primeira linha apareça na barra de status, nem você pode resolver isso programaticamente.
Por exemplo, no cenário acima, o seguinte terá nenhum efeito:
// These do not work
self.edgesForExtendedLayout=UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars=NO;
self.automaticallyAdjustsScrollViewInsets=NO;
Esse problema pode ser muito frustrante, e acredito que seja um bug no final da Apple, especialmente porque aparece em seus próprios cabos UITableViewController
da biblioteca de objetos.
Eu discordo de todos que estão tentando resolver isso usando qualquer forma de "Números mágicos", por exemplo, "use um delta de 20px". Esse tipo de programação fortemente acoplada definitivamente não é o que a Apple quer que façamos aqui.
Eu descobri duas soluções para esse problema:
Preservando a UITableViewController
cena da cena :
se você deseja manter o UITableViewController
storyboard, sem colocá-lo manualmente em outra exibição, é possível incorporá-lo UITableViewController
em UINavigationController
(Editor> Incorporar> Navegador) e desmarcar a opção "Mostra barra de navegação" no inspetor . Isso resolve o problema sem precisar de ajustes extras, além de preservar a UITableViewController
cena da sua pessoa no storyboard.
Usando o AutoLayout e incorporando-o UITableView
a outra visualização (acredito que é assim que a Apple deseja que façamos isso) :
crie um vazio UIViewController
e arraste UITableView
-o. Em seguida, pressione Ctrl e arraste do seu UITableView
para a barra de status. Quando o mouse chegar à parte inferior da barra de status, você verá um balão de Autolayout que diz "Guia de layout superior". Solte o mouse e escolha "Espaçamento vertical". Isso informará o sistema de layout para colocá-lo logo abaixo da barra de status.
Eu testei nos dois sentidos em um aplicativo vazio e ambos funcionam. Você pode precisar fazer alguns ajustes extras para fazê-los funcionar no seu projeto.