Saturday 23 September 2017

Edgesforextendedlayout Uitableview Header


Como remover o preenchimento inesperado no cabeçalho de um UITableView Quase toda vez que eu coloco um controlador de navegação, com um controlador de vista de raiz que contém uma visão de tabela, o resultado é uma exibição de tabela com um preenchimento inesperado em seu cabeçalho. A razão pela qual isso acontece é a propriedade UIViewController s automaticamenteAdjustsScrollViewInsets. Que é um valor booleano que indica se o controlador de visualização deve ajustar automaticamente suas inserções de exibição de rolagem. . E é padrão para SIM. A propriedade foi introduzida no iOS 7 e, juntamente com as bordasForExtendedLayout, faz com que o efeito agradável da rolagem de conteúdo abaixo de uma barra de navegação translúcida seja possível. Como corrigi-lo Até agora, encontrei duas maneiras de resolver esse problema de interface do usuário: Defina automaticamenteAdjustsScrollViewInsets como false Configurando o valor automaticAdjustsScrollViewInsets para false resolve o problema. No Interface Builder, isso pode ser feito soltando a opção Inserir ajuste de exibição de rolagem do controlador de exibição onde a vista da tabela é. Tornar a barra de navegação não translúcida Outra opção é tornar a barra de navegação não translúcida. Essa barra de navegação não desencadeia os ajustes das inserções de exibição de rolagem no controlador de visualização. No Interface Builder, isso pode ser feito soltando a opção Translúcido da barra de navegação dos controladores de navegação. Eu também achei que a única maneira de realmente selecionar esse componente é através da árvore de hierarquia de exibição à esquerda. UIViewController contenção Uma nota final nas vistas de tabela embutida através da contenção do controlador de exibição. Para evitar o cabeçalho naqueles, precisamos novamente configurar a falsa a propriedade automaticAdjustsScrollViewInsets do controlador de exibição pai. Isso pareceu-me contrário intuitivo no começo. Mas se pensarmos sobre o funcionamento do processo de contenção, extraindo a visão da criança e colocando-a no pai, torna-se óbvio que as regras de layout, como AutomaticAdjustsScrollViewInsets do pai, também se aplicam à criança. Alimentos para pensamentos Há outra maneira, talvez melhor, de corrigir esse problema. Pode ser evitado, colocando as exibições de forma diferente. Por que o controlador de navegação padrão da tabela do controlador de navegação da biblioteca de componentes do Interface Builder não faz isso. Observe mais profundamente os mecanismos automaticAdjustsScrollViewInsets e edgesForExtendedLayout . Por favor, ative o JavaScript para visualizar os comentários alimentados por Disqus. Mokagios tech journalTeres um UITableView simples no meu aplicativo, e há uma exibição personalizada para a propriedade tableView. tableHeaderView. Quando esta propriedade está configurada, a vista tem o tamanho correto (largura total, cerca de 45px de altura). No iOS 9 e versões anteriores, o cabeçalho é exibido corretamente, mas no iOS 10, as células começam na mesma coordenada Y que minha exibição de cabeçalho, então minha exibição de cabeçalho aparece na primeira célula. Definir essas propriedades também não tem efeito: algo mudou no iOS 10 que poderia explicar esse comportamento diferente. O que seria uma boa solução

No comments:

Post a Comment