Monday 22 May 2017

Edgesforextendedlayout Scrollview Exemplo


Começando no iOS7, os controladores de exibição usam o layout de tela inteira por padrão. Ao mesmo tempo, você tem mais controle sobre como ele expõe seus pontos de vista, e isso é feito com essas propriedades: basicamente, com essa propriedade, você define quais lados de sua exibição podem ser estendidos para cobrir toda a tela. Imagine que você empurre um UIViewController para um UINavigationController. Quando a visão desse controlador de visualização é estabelecida, ele começará onde a barra de navegação termina, mas essa propriedade irá definir quais lados da vista (superior, esquerda, inferior, direita) podem ser estendidos para preencher a tela inteira. Deixe-o com um exemplo: Aqui você não está definindo o valor de edgesForExtendedLayout. Portanto, o valor padrão é tomado (UIRectEdgeAll), então a vista amplia seu layout para preencher a tela inteira. Este é o resultado: como você pode ver, o fundo vermelho se estende por trás da barra de navegação e da barra de status. Agora, você vai definir esse valor para UIRectEdgeNone. Então você está dizendo ao controlador de exibição para não estender a exibição para cobrir a tela: Esta propriedade é usada quando sua exibição é UIScrollView ou similar, como um UITableView. Você quer que sua mesa comece onde a barra de navegação termina, porque você não verá todo o conteúdo se não, mas ao mesmo tempo você deseja que sua tabela cubra toda a tela ao deslocar-se. Nesse caso, definir bordasForExtendedLayout para None não funcionará porque sua tabela começará a deslizar para onde a barra de navegação termina e não vai atrasar. Aqui é onde esta propriedade vem a calhar, se você deixar o controlador de visualização ajustar automaticamente as inserções (definindo esta propriedade para YES, também o valor padrão) ele irá adicionar inserir para o topo da tabela, então a tabela vai começar onde a navegação O bar termina, mas o pergaminho cobrirá toda a tela. Isto é quando é definido como NÃO: E SIM (por padrão): Em ambos os casos, a tabela se desliza para trás da barra de navegação, mas no segundo caso (SIM), ele irá começar por baixo da barra de navegação. Este valor é apenas uma adição aos anteriores. Se a barra de status for opaca, as vistas não serão estendidas para incluir a barra de status também, a menos que este parâmetro seja SIM. Portanto, se você estender sua exibição para cobrir a barra de navegação (edgesForExtendedLayout para UIRectEdgeAll) eo parâmetro é NO (padrão) ele não vai cobrir a barra de status se o seu opaco. Se algo não estiver claro, escreva um comentário e eu responda. Como o iOS sabe o que o UIScrollView usa para usar o iOS agarra a primeira subview na visualização viewcontrollers, então a que está no índice 0 e se for uma subclasse do UIScrollView, aplica as propriedades explicadas a ela. Claro, isso significa que o UITableViewController funciona por padrão (uma vez que o UITableView é a primeira exibição). Embora a resposta Clafous seja certamente correta, se você não precisa de transparência e quer começar na barra de navegação, a maneira realmente correta é mudar o comportamento do ViewController para que ele se ajuste adequadamente ao conteúdo. Para fazer isso, você tem duas opções: 1) Supondo que você tenha Storyboard, vá para ViewController Attributes Inspector e desabilite sob as barras superiores 2) Supondo que você seja tudo por meio do código, você quer procurar as seguintes propriedades - edgeForExtendedLayout. E extendedLayoutIncludesOpaqueBars. Há uma ótima resposta para isso já em SO, então eu não vou abordá-lo aqui.

No comments:

Post a Comment