Tuesday 29 January 2019

Edgesforextendedlayout uitableviewdatasource


A primeira tela do meu aplicativo é UITableViewController sem uma barra de navegação, o que significa que o conteúdo flui sob a barra de status, então há muitas colisões de texto. Eu ajustei as propriedades para as barras inferiores e Ajustar as inserções de exibição de rolagem, que realmente o impedem de se deslocar para baixo, mas ao custo de manter a parte superior da vista da tabela abaixo. Eu tentei configurar o quadro UITableView para compensar por 20 pixels, mas ele não parece ter efeito e, como eu atualmente preciso que o aplicativo seja compatível com iOS 6, eu não posso pular para o IOS 7 Storyboards para forçar o autolayout para usar o guia de altura superior. Alguém encontrou uma solução que funciona para ambas as versões As coisas que eu tentei: definindo edgesForExtendedLayout. Alterando as configurações dentro do Storyboard para barras inferiores e ajuste a exibição de rolagem. Forçando o quadro a uma nova área. Perguntou 19 de setembro às 16:40 Para qualquer pessoa interessada em replicar isso, esse problema é muito fácil de replicar: crie um novo projeto e exclua o ViewController padrão e substitua-o por um TableViewController que você arrasta para o Storyboard da Biblioteca de Objetos. Se você seguir estas etapas, você verá que nada, incluindo a seleção de caixas de seleção Xcodes para Extended Edges Under Bars, bem como o uso irá colocar o UITableView abaixo da barra de status. Esse problema pode ser muito frustrante e acredito que seja um erro no final das Maçãs, especialmente porque ele aparece em seu próprio TableViewController pré-conectado da biblioteca de objetos. Eu não concordo com todos os que estão tentando resolver isso usando qualquer forma de números mágicos, e. Use um delta de 20px. Esse tipo de programação fortemente acoplada definitivamente não é o que a Apple quer que façamos aqui. Descrevi duas soluções para este problema: preservando a cena do TableViewController s. Se você quiser manter o TableViewController no Storyboard, sem colocá-lo manualmente em outra visualização, você pode incorporar o TableViewController em um Controlador de Navegação (Editor Embed In Navigation Controller) e desmarcar Shows Navigation Bar. Isso resolve o problema sem necessidade de ajustes extras e também preserva a cena do TableViewControllers no storyboard Usando o AutoLayout e incorporando o TableView em outra exibição (eu acredito que a Apple quer que façamos isso). Crie um ViewController vazio e arraste seu UITableView nele. Em seguida, arraste Ctrl do TableView para a barra de status. À medida que o mouse chega ao fundo da barra de status, você verá uma bolha Autolayout que diz o Guia de Layout Superior. Solte o mouse e escolha Espaciamento vertical. Isso indicará ao sistema de layout que o posicione logo abaixo da barra de status. Eu testei ambos os caminhos em um aplicativo vazio e ambos trabalharam. Você pode precisar fazer alguns ajustes extras para fazê-los funcionar para o seu projeto. RyanR percebi isso também, mas acho que isso é bom em algum momento. A Apple fez o mesmo na exibição de abas abertas do Safari39 móvel, as abas serão exibidas debaixo da barra de status. A solução do controlador de navegação é a solução mais simples, eu raiz por isso. No entanto, a barra de status translúcido é uma idéia estúpida. Ndash Pride Chung 26 de setembro 13 às 17:01 A opção 2 não funciona mais no Xcode 5. A ação descrita (ctrl-drag) nunca deve ter funcionado, uma vez que é propriedade do sistema Outlets, mas mesmo que você arraste manualmente para a cena Árvore no guia de layout esquerdo e superior NÃO TRABALHA (deve fazer, AFAICT - Eu acredito que este é mais um grande erro no AutoLayout :( :() ndash Adam Dec 10 13 às 11:05 Atenção: isso funcionou para mim para o Seguinte configuração: nenhuma barra de navegação na parte superior da tela (a exibição da tabela atende a barra de status) A exibição da tabela não é rolável Se os dois requisitos acima não coincidem com o seu milho pode variar. Eu criei minha visão de forma programática e isso acabou funcionando para mim: Fonte (na seção TopLayoutGuide no final da página 36). Adicionando a resposta máxima: após o segundo método, não pareceu funcionar inicialmente, eu fiz alguns retoques adicionais e encontrei a solução. O TLDR o top responde que a segunda solução quase funciona, mas Para algumas versões do xCode ctrldragging para o Top Layout Guide e selecionando Ve O espaçamento não faz nada. No entanto, primeiro ajustando o tamanho da Tabela e, em seguida, selecionando Top Space to Top Layout Guide funciona Arraste um objeto UITableView para a Vista. (Não UITableViewController). Posicione-o no centro usando os guias de layout azul. Arraste um UITableViewCell para o TableView. Esta será a sua célula de reutilização de reutilização, portanto, não se esqueça de definir seu Identificador de Reutilização sob a guia Atributos ou você terá uma falha. Crie sua subclasse personalizada do UIViewController e adicione os protocolos ltuitableViewDataSource, UITableViewDelegategt. Não se esqueça de configurar seus storyboards ViewController para esta classe no Identity Inspector. Crie uma saída para seu TableView em seu arquivo de implementação e nomeie-o tableView Clique com o botão direito do mouse no TableView e arraste a DataSource e o delegado para o ViewController. Agora, para a parte de não recortar a barra de status. Pegue a borda superior da sua Vista da mesa e mova-a para baixo para um dos guias de layout automático azul quebrados que estão perto da parte superior. Agora, você pode controlar o arrastar da Vista da tabela para o topo e selecione o Guia de layout superior do espaço para o topo. Dar-lhe um erro sobre o layout ambíguo do TableView, apenas adicionar restrições faltantes e o seu feito. Agora você pode configurar sua visão de tabela como normal, e não cortará a barra de status. Não sei como é Kosher, mas descobri que esse esquema move a exibição ViewControllers para baixo e fornece a barra de status com um fundo sólido: claro, Substitua RedColor com qualquer cor que você quiser para o plano de fundo. Você deve fazer separadamente um dos Swizzles para definir a cor dos símbolos de caracteres na barra de status. Eu uso Exibir a aparência da barra de status baseada no controlador NO e estilo de barra de status Estilo preto opaco no plist, para fazer isso globalmente. Parece que funciona, e eu estou interessado em saber sobre quaisquer erros ou problemas com ele. Respondeu em 22 de janeiro 14 às 22:08 isso não funcionou para mim ndash Seslyn 29 de março 15 às 21:33 A seguinte solução funciona bem o suficiente no código sem usar constantes mágicas e explica o usuário alterando a classe de tamanho, p. Através de rotações ou aplicativos lado a lado no ipads: a solução Abrahamchezs developer. applelibraryiosqaqa1797index. html funcionou para mim da seguinte forma. Eu tinha um único UITableviewcontroller como minha visão inicial. Tentei o código de deslocamento e a incorporação em um navcon, mas não resolvi a transparência da barra de status. Adicione um Viewcontroller e torne-o a visualização inicial. Isso deve mostrar os guias críticos do layout do fundo do amplificador superior. Arraste o Tableview antigo para a Vista no novo controlador. Faça todas as coisas para adaptar a tabela ao novo controlador: Mude o arquivo antigo view controller. h para inheritsubclass do UIViewController em vez de UITableViewController. Adicione UITableViewDataSource e UITableViewDelegate aos viewcontrollers. h. Reconecte qualquer coisa necessária no storyboard, como uma barra de busca. O grande é ter as restrições configuradas, como no Apple QampA. Eu não me incomodava em inserir uma barra de ferramentas. Não há certeza da sequência exata. Mas um ícone vermelho apareceu nos Guias de Layout, talvez quando eu construí. Cliquei e deixe o Xcode instalar as restrições. Então cliquei em todos os lugares até encontrar a restrição Vertical Space e alterei seu valor superior de -20 para 0 e funcionou perfeitamente. Se você também precisa suportar o iOS 6, você terá que condicioná-lo para baixo. Ou seja, no iOS 7, você deve simplesmente deslocá-lo para baixo em 20 pontos (por meio da manipulação de quadros ou usando o layout automático), e no iOS 6 você deixa isso sozinho. Eu não acredito que você pode fazer isso no IB, então você precisará fazê-lo em código. Você pode realmente fazer isso no IB, usando os deltas iOS6iOS7. Defina a sua posição no iOS 7 e, em seguida, para o iOS 6, defina o delta Y para -20 pontos. Veja esta questão para obter mais informações. Respondeu 19 de setembro às 19:01 Ajustando o quadro para baixo não o altera, infelizmente. Ndash Nicholas Smith 19 de setembro 13 às 19:07 O que não funciona sobre isso A visão da mesa não se move para baixo ndash Scott Berrevoets 19 de setembro 13 às 19:11 Sim, ele permanece na mesma posição. Eu tentei self. view. frame e self. tableView. frame. Em ambos viewWillAppear e viewDidLoad. Para estar seguro, eu também configure setContentNeedsDisplay para forçar um redraw. Ndash Nicholas Smith 19 de setembro 13 em 19: 13. Quota de conteúdo Awot quot. Quot Great content quot. Quot Amazing content quot. Quociente ao conteúdo lúdico. Quota de conteúdo incrível. Quot Great content quot. Quot Amazing content quot. Quociente ao conteúdo lúdico. Quota de conteúdo incrível. Quot Great content quot. Quot Amazing content quot. Quociente ao conteúdo lúdico. Quota de conteúdo incrível. Quot Great content quot. Quot Amazing content quot. Quociente ao conteúdo lúdico. EdgeForExtendedLayout UIRectEdgeNone self. TableView UITableView alloc initWithFrame: UIScreen mainScreen. bounds style: UITableViewStylePlain

No comments:

Post a Comment