Edgesforextendedlayout uitableview background


A primeira tela do meu aplicativo é um UITableViewController sem uma barra de navegação, o que significa que o conteúdo flui sob a barra de status, por isso há um monte de colisões de texto. Ive ajustado tanto as propriedades para Under Top bares e ajustar rolagem vista inserções que realmente impedem-lo de rolagem em, mas ao custo de manter o topo da tabela sob vista. Ive tentou definir a moldura UITableView para compensar por 20 pixels, mas ele doesnt parecem ter efeito e como eu atualmente preciso do aplicativo para ser compatível com iOS 6 eu não posso pular para iOS 7 Storyboards para forçar autolayout para usar o guia de altura superior. Alguém encontrou uma solução que funcione para ambas as versões Things Ive tried: setting edgesForFextendedLayout. Alterando as configurações dentro do Storyboard para barras inferiores e ajustar a exibição de rolagem. Forçando o quadro a uma nova área. 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ê arraste para o Storyboard da Biblioteca de Objetos. Se você seguir estas etapas, verá que nada, incluindo as caixas de seleção de Xcodes de aprimoramento para Estender Bordas em Barras, bem como o uso, colocará o UITableView abaixo da barra de status. Este problema pode ser muito frustrante, e eu acredito que é um bug no fim das maçãs, especialmente porque ele aparece em seus próprios pré-cabeados TableViewController a partir da biblioteca de objetos. Eu discordo com todo mundo que está tentando resolver isso usando qualquer forma de Magic Numbers, e. Use um delta de 20px. Este tipo de programação fortemente acoplada não é definitivamente o que a Apple quer que façamos aqui. Descobri duas soluções para este problema: Preservando a cena do TableViewController. Se você quiser manter o TableViewController no Storyboard, sem colocá-lo manualmente em outra exibição, você pode incorporar o TableViewController em um Controlador de Navegação (Editor Incorporado no Controlador de Navegação) e desmarque a Barra de Navegação em Mostras. Isso resolve o problema sem ajustes extras necessários, e também preserva você cena TableViewControllers no storyboard Usando AutoLayout e incorporando o TableView em outro modo de exibição (eu acredito que isso é como 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. Conforme o mouse chega ao fundo da barra de status, você verá uma bolha Autolayout que diz Top Layout Guide. Solte o mouse e escolha Espaçamento vertical. Isso irá dizer o sistema de layout para colocá-lo logo abaixo da barra de status. Eu testei ambas as maneiras em um aplicativo vazio e ambos funcionam. Você pode precisar fazer alguns ajustes extras para fazê-los trabalhar para o seu projeto. RyanR Eu notei isso também, mas eu acho que está bem em algum ponto. A Apple fez a mesma coisa no Mobile Safari39s abriu guias visão, guias serão exibidos debaixo da barra de status. A solução de controlador de navegação é a solução mais simples, eu root para ele. No entanto, a barra de status translúcido é uma idéia estúpida. Ndash Pride Chung Sep 26 13 at 17:01 A opção 2 não funciona mais no Xcode 5. A ação descrita (ctrl-arrastar) nunca deve ter funcionado, uma vez que é propriedade do sistema Outlets, mas mesmo se você arrastar manualmente para a cena Árvore na esquerda, guia de layout superior NÃO FUNCIONA (deve fazer, AFAICT - Eu acredito que este é outro erro importante no AutoLayout :( :() ndash Adam Dec 10 13 at 11:05 Por favor note: Isso funcionou para mim para o Seguinte configuração: Nenhuma barra de navegação na parte superior da tela (exibição de tabela atende a barra de status) A exibição de tabela é não rolável Se os dois requisitos acima não forem atendidos seu milage pode variar Eu criei meu ponto de vista programaticamente e isso acabou funcionando para mim: Fonte: (na seção topLayoutGuide na parte inferior da página 39.) Adicionando à resposta superior: após o método 2 inicialmente não parecia funcionar eu fiz alguns ajustes adicionais e ter encontrado a solução. TLDR a resposta 2 respostas quase funciona, mas Para algumas versões do xCode ctrldragging para Top Layout Guide e selecionando Vertical Spacing não faz nada. No entanto, primeiro ajustando o tamanho do modo de exibição de tabela e, em seguida, selecionando Topo Espaço para Topo Layout Guide funciona Arraste um objeto UITableView para o modo de exibição. (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 protótipo, por isso não se esqueça de definir o seu identificador de reutilização sob a guia Atributos ou você obterá um acidente. Crie sua subclasse personalizada do UIViewController e adicione os protocolos ltUITableViewDataSource, UITableViewDelegategt. Não se esqueça de configurar o ViewController do storyboard para esta classe no Inspetor de identidade. Crie uma saída para o TableView no seu arquivo de implementação e nomeie-o tableView Clique com o botão direito do mouse no TableView e arraste o DataSource eo delegado para o ViewController. Agora para a parte de não cortar na barra de status. Agarre a borda superior da sua vista de tabela e mova-a para baixo para um dos guias de layout automático azul tracejado que estão perto do topo Agora, você pode controlar arrastar a partir da exibição de tabela para o topo e selecione Dar-lhe um erro sobre o layout ambíguo de TableView, basta adicionar restrições em falta e seu feito. Agora você pode configurar sua exibição de tabela como normal, e não vai clip a barra de status Eu não sei como Kosher é, mas eu achei que este esquema move a ViewControllers ver e fornece a barra de status com um fundo sólido: Claro, Substitua o redColor com o que cor você quer para o fundo. Você deve fazer separadamente um dos swizzles para definir a cor dos caracteres / símbolos na barra de status. Eu uso a aparência da barra de status baseada no controlador de exibição e estilo de barra de status Opaque estilo preto no plist, para fazer isso globalmente. Parece funcionar, e eu estaria interessado em saber de quaisquer bugs ou problemas com ele. Respondeu Jan 22 14 at 22:08 this didn39t trabalho para mim ndash Seslyn Mar 29 15 at 21:33 A seguinte solução funciona bem o suficiente no código sem usar constantes mágicas e contas para o usuário alterar a classe de tamanho, p. Através de rotações ou aplicativos lado a lado em ipads: a solução Abrahamchezs developer. apple/library/ios/qa/qa1797/index. html funcionou para mim da seguinte forma. Eu tinha um único UITableviewcontroller como minha visão inicial. Eu tinha tentado o código de deslocamento e incorporação em um navcon, mas nem resolveu a transparência statusbar. Adicione um Viewcontroller e torne-o a visualização inicial. Isso deve mostrar-lhe crítico Top amp Bottom Layout Guias. Arraste o Tableview antigo para o modo de exibição no novo controlador. Faça todo o material para atualizar a tabela para o novo controlador: Altere o arquivo view controller. h antigo para herdar / subclasse de UIViewController em vez de UITableViewController. Adicionar UITableViewDataSource e UITableViewDelegate para o viewcontrollers. h. Reconecte tudo o que for necessário no storyboard, como uma barra de pesquisa. A grande coisa é conseguir as restrições estabelecidas, como na Apple QampA. Eu não me incomodei inserindo uma barra de ferramentas. Não está certo da seqüência exata. Mas um ícone vermelho apareceu nos Guias de Layout, talvez quando eu construí. Eu cliquei nele e deixei o Xcode instalar / limpar as restrições. Então eu cliquei em toda parte até que eu encontrei a restrição de espaço vertical e mudou seu valor superior de -20 para 0 e funcionou perfeitamente. Se você também precisa suportar iOS 6, você terá que condicionalmente movê-lo para baixo. Ou seja, no iOS 7 você deve apenas movê-lo para baixo 20 pontos (através de manipulação de quadro ou usando auto-layout), e no iOS 6 você deixá-lo sozinho. Eu não acredito que você pode fazer isso em IB, então você terá que fazê-lo em código. Você pode realmente fazer isso em IB, usando o iOS6 / iOS7 deltas. Defina sua posição no iOS 7 e, em seguida, para iOS 6 defina o delta Y para -20 pontos. Veja esta pergunta para obter mais informações. Respondeu Sep 19 13 em 19:01 Definir o quadro para baixo doesn39t alterá-lo, infelizmente. Ndash Nicholas Smith Sep 19 13 em 19:07 O que não funciona sobre ele A visão de tabela doesn39t mover para baixo ndash Scott Berrevoets Sep 19 13 em 19:11 Sim, ele permanece na mesma posição. Eu tentei self. view. frame e self. tableView. frame. Em viewWillAppear e viewDidLoad. Para ser seguro também definir setContentNeedsDisplay para forçar um redesenho. Ndash Nicholas Smith Sep 19 13 em 19: 13Alternating Tableview Cell Backgrounds Um pode ser tentado a também definir o fundo cell8217s aqui, mas você obterá resultados confusos se você fizer. O iPhoneOS faz alguma criação de conteúdo complicado da célula e realmente exibi-lo para maximizar o desempenho, mas ainda permitir uma seleção azul por trás do conteúdo cell8217s sem você ter que pensar sobre como essas células são composited. De um vídeo WWDC eu aprendi que o melhor lugar para colocar tal alternando não está no lugar que você normalmente usaria para configurar uma célula. Existe um método que é chamado direito antes do desenho e isso dá-lhe a oportunidade de fazer algumas alterações de 8220last milissegundo antes que a célula realmente se desenha em seu lugar. Observe a maneira C-ish para tornar a cor alternada. É o operador módulo. E. É uma abreviação para um if. Valor-condição: valor-falso. Isso é chamado quando a célula 8220 será exibida8221 como você pode ver a partir do nome. Agora os números de linha começam de zero para cada seção. Então, temos que encontrar uma maneira de obter o número real de linha para toda a vista de tabela. A única maneira que eu conheço é realmente fazer um pouco de contagem de nós mesmos. Mas uma vez que já existem métodos de delegado para retornar o número de seções eo número de linhas para qualquer seção, isso é bastante simples. Here8217s o código inteiro: It8217s inteligente para usar o que você tem e ninguém pode dizer-lhe para não usar seu próprio tableView datasource métodos para calcular um valor necessário sobre a fly. UITableView estender bordas sob a barra superior 107 I subclassed SlackTextViewController para criar o meu próprio UITableView, Mas descobriu que a exibição de tabela não foi estendida na barra de navegação superior. O inspetor de interface do usuário no Xcode também confirma isso. Gostaria de saber como posso fazer o UITableViews bordas estender sob a barra de navegação, para que o conteúdo sobre o tableview pode aparecer através da barra translúcida. Edit: Depois de examinar o código, descobri que o problema reside neste método Se a propriedade invertida estiver definida como YES, a propriedade edgesForwardsxtLayout é automaticamente definida como UIRectEdgeNone. Se eu remover essa linha, a exibição da tabela irá mudar para cima. Dapenggao mudou o título de UITableView estender bordas sob a barra superior para UITableView estender bordas na barra superior, deslize para apagar 22 de janeiro de 2017 dapenggao mudou o título de UITableView estender bordas na barra superior, deslize para apagar para UITableView , 2017

Comments

Popular Posts