Arrastei um UITableView de Jane simples para um UIViewController no iOS 7.
Agora há um deslocamento vertical do espaço antes do início da primeira célula. Como faço para me livrar dele? Quero que a primeira linha esteja muito mais próxima da borda superior de onde o UITableView realmente começa. Eu não pedi o grande deslocamento, pedi?
Alguma ideia?
uitableview
ios7
user798719
fonte
fonte
Respostas:
Por padrão, os controladores de visualização da tabela preencherão o conteúdo abaixo da barra de navegação para que você possa rolar o conteúdo abaixo dela e vê-lo, em um estado borrado, abaixo da barra de navegação / barra de ferramentas.
Parece que você está posicionando em 44 (talvez 64) px para movê-lo para fora da barra de navegação, mas já compensa isso, então você obtém uma grande lacuna.
Vá para o storyboard / xib no IB e desmarque o conteúdo do programa em coisas da barra de navegação.
fonte
Adjust Scroll View insets
, remova a marca de seleção.A nova implementação do iOS 7 de UIViewController tem um novo conjunto de opções que permite ao desenvolvedor escolher se o sistema adicionará automaticamente inserções para UIScrollView , UITableView e derivações.
Para desativar esse comportamento, desmarque essas caixas para todos os UIViewControllers desejados em InterfaceBuilder, no inspetor de objeto selecionado UIViewController :
Para mais detalhes:
fonte
Guia de transição do iOS7:
fonte
Adjust Scroll View Insets
caixa de seleção do layout do controlador de visualização.automaticallyAdjustsScrollViewInsets = NO
no controlador de visualização.Eu tive um problema semelhante, depois de descartar um viewController, o contentOffset do meu tableView foi alterado para (0, -64).
minha solução foi um pouco estranha, tentei todas as outras respostas mas não tive sucesso, a única coisa que resolveu meu problema foi mudar a posição tableView na árvore de controles do .xib
foi o primeiro controle na Visualização pai assim:
Mudei o tableView logo após o ImageView e funcionou:
parece que colocar a visualização da mesa na primeira posição estava causando o problema e mover a visualização da mesa para outra posição corrigiu o problema.
PD Não estou usando autoLayout nem storyboards
espero que isso possa ajudar alguém!
fonte
resolve meu problema semelhante:
fonte
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
Tente usar isto
tableView.separatorInset = UIEdgeInsetsZero;
Obviamente, se você oferece suporte a algo menos do que iOS7, precisará garantir que o objeto responda a esse seletor antes de chamá-lo.
fonte
Sério, mudar
contentOffset
não é a solução. Você está apenas corrigindo um problema e não corrigindo a causa. Tenho enfrentado o mesmo problema e descobri que tableViews agrupadas têm um preenchimento na parte superior. No meu caso, definir o tipo como normal fez o truque.Esperançosamente, isso poupa alguns minutos. Z.
fonte
Com o iOS 9, nenhuma das outras respostas desta página funcionou para mim (ou seja, desmarcar as caixas no Storyboard, definir
automaticallyAdjustsScrollViewInsets
comoNO
).Minha solução alternativa com a qual estou realmente insatisfeito foi esta:
As mesmas linhas em
viewWillAppear
ouviewDidLoad
foram ineficazes.fonte
Adjust Scroll View insets
caixa de seleção funciona para iOS 9.Às vezes, eu obtenho uma
64
lacuna de altura no topo da minha Table View quando oUIViewController
está embutido em um Navigation Controller.No passado, eu apenas recriaria tudo, esperando que as restrições ficassem corretas depois de uma lousa em branco.
TIL: Se você não quiser fazer uma restrição vertical para o
Top Layout Guide
, você pode manter pressionada aOption
tecla para acessar oContainer Margin
.Em seguida, verifique se a
Top Space to Superview
constante está definida como0
. Isso funcionou para mim, pelo menos.fonte
Isso funciona para mim:
fonte
Se você adicionar um UIView vazio antes de UITableView (ou qualquer exibição rolável, como ScrollView e TextView), você pode ter uma sorte.
fonte
Eu tinha um UITableViewController incorporado em uma visualização de contêiner. Para me livrar dos indesejados 64 pontos de espaço vertical, eu precisei desmarcar 'Ajustar Scroll View Insets' no Interface Builder e definir o UITableView's contentInset no viewWillAppear do meu UITableViewController como abaixo.
O tamanho do espaço vertical parece corresponder à altura do quadro da barra de navegação e deslocamento y. O problema ocorreu apenas no iOS 7.
fonte
No Xamarin iOS, tive esse problema ocorrendo em um UITableViewController em segundo plano logo após a caixa de diálogo modal em primeiro plano ter sido descartada. No processo de mudança para o primeiro plano, o UITableViewController tinha inserções definidas (em algum lugar pelo iOS):
Esta aula resolveu
fonte
De vez em quando, volto a essa situação terrível e percebo que ainda é bastante desconhecida. Então, para memória futura ...
Ultimamente, estou corrigindo essa solução alternativa.
Não me pergunte por quê, ainda acho que é um bug profundo no UIKit.
fonte
Se você for para o storyboard, poderá alterar o deslocamento selecionando a tabela e, na seção Visualização da tabela no inspetor de atributos, basta alterar as inserções do separador à esquerda para 0.
fonte
Acho que a solução real é configurar suas restrições superior e inferior no tableview para serem iguais a topMargin e bottomMargin. Não é o guia de layout superior e o guia de layout inferior. Isso permite que você mantenha automaticAdjustsScrollViewInsets verdadeiro.
fonte
Solução Swift 3:
fonte
Se você embutiu seu TableViewController em um NavigationController ou ContainerView
You have to constraint to margins instead of top Layout guide in Storyboard
,.Check constraint to margins when you are doing the constraints
Nenhuma outra maneira funcionou para mim. Não pude comentar, então estou apenas reiterando a resposta de Robert Chens.fonte
Tentei várias das respostas. Alterar as configurações no storyboard causou problemas de ondulação com um menu de sobreposição que aparece da esquerda.
Eu só tenho um UIViewController em branco no storyboard, caso contrário, tudo é gerado programaticamente.
Eu tenho o mesmo problema com um UITableView dentro de um UIView dentro de um UIViewController. Ou seja, os cabeçalhos da seção começam muito para baixo quando o UIViewController é incorporado em um controlador de navegação. Sem o controlador de navegação, tudo funciona bem.
Para corrigir o problema, criei um UILabel e com restrições coloquei a restrição inferior UILabel = a restrição superior do UIView (para que não apareça na tela. Agora com esse controle adicional (o novo Label) o TableView se comporta corretamente.
fonte
Eu tive o mesmo problema no iOS 11 e xib, UITableviewController e resolvi como abaixo
fonte