As células do UITableView
programa estão no espaço vazio quando você rola para baixo?
Nesse caso, o problema pode ser a inserção adicionada ao UITableView
controlador de navegação que você tem em sua exibição. A inserção é adicionada à visualização da tabela para que o conteúdo seja colocado abaixo da barra de navegação quando nenhuma rolagem ocorreu. Quando a tabela é rolada, o conteúdo rola e é exibido sob uma barra de navegação transparente. Obviamente, esse comportamento é desejado apenas se a exibição da tabela iniciar diretamente sob a barra de navegação, o que não é o caso aqui.
Outro aspecto a ser observado é que o iOS ajusta o conteúdo inserido apenas para a primeira visualização na hierarquia de visualizações, se é UIScrollView
ou é descendente (por exemplo, UITableView
e UICollectionView
). Se sua hierarquia de visualizações incluir várias visualizações de rolagem, automaticallyAdjustsScrollViewInsets
fará ajustes apenas na primeira.
Veja como alterar esse comportamento:
a) Construtor de interface
- Selecione o controlador de exibição
- Inspetor de atributos abertos
Há uma propriedade chamada "Ajustar inserções de exibição de rolagem" no inspetor de atributos do IB (quando um controlador de exibição é selecionado) que está ativado por padrão. Desmarque esta opção:
(Imagem cortesia de Dheeraj D )
Não tenho certeza de qual versão do Xcode introduziu essa opção (não a localizou nas notas de versão), mas está disponível pelo menos na versão 5.1.1.
Edit: Para evitar confusão, esta foi a terceira opção mencionada nos comentários
b) programaticamente
Adicione isto a ie viewDidLoad
(créditos à resposta de Slavco Petkovski e comentário de Cris R )
// Objective-C
self.automaticallyAdjustsScrollViewInsets = NO;
// Swift
self.automaticallyAdjustsScrollViewInsets = false
c) Isso pode ser relevante para os alunos mais velhos
Você pode corrigir isso adicionando
tableView.contentInset = UIEdgeInsetsZero
//Swift 3 Change
tableView.contentInset = UIEdgeInsets.zero
Ou se você estiver usando IB e se a barra de navegação não for transparente (não é possível distinguir na captura de tela)
- Selecione o controlador de exibição
- Inspetor de atributos abertos
- Na seção Opções do Controlador de exibição, estender arestas, desmarque "Abaixo das barras superiores"