Saturday 1 July 2017

Edgesforextendedlayout Story Boards


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 é útil, se você deixar o controlador de exibição ajustar automaticamente as inserções (configurando esta propriedade para SIM, também o valor padrão), ela adicionará inserção no topo da tabela, então a tabela 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. Esse 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. Então, se você estender sua visão para cobrir a barra de navegação (edgeForExtendedLayout para UIRectEdgeAll) e o parâmetro é NO (padrão), ele não cobrirá a barra de status se for 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, aceita a primeira sub-visualização na visualização do seu viewcontrollers, de modo que o do índice 0 e, se for uma subclasse do UIScrollView, aplica as propriedades explicadas a ele. Claro, isso significa que o UITableViewController funciona por padrão (uma vez que o UITableView é a primeira visualização). Guia de lançamento Uma das responsabilidades de um contêiner do controlador de exibição é projetar suas visualizações de controladores de exibição infantil. Este guia passa sobre como você pode controlá-lo. Reveal vs Peek Amount É assim que você especifica a posição horizontal da vista superior quando está ancorado em um lado. É importante saber a diferença entre a revelação ancorada e os valores de pontos de vista ancorados ao suportar múltiplas orientações e tamanhos de tela. Se você só precisa suportar uma orientação única em um tamanho de tela específico, a diferença não é importante. Revelar A quantidade horizontal da vista abaixo para mostrar. Peek A quantidade horizontal da vista superior para mostrar. A convenção de nomenclatura para as propriedades: âncora (esquerda ou direita) (Revelar ou Peek) Quantidade. A combinação de todas as possibilidades leva a estas quatro propriedades: anchorLeftPeekAmount anchorLeftRevealAmount âncoraRightPeekAmount anchorRightRevealAmount Ajustar a quantidade de revelação de um lado calculará a quantidade de peek para o mesmo lado e vice-versa. A propriedade que você definiu será um valor fixo, fazendo com que o outro seja calculado. Esta é uma propriedade incorporada no UIViewController. Sua descrição do iOS 7 UI Transition Guide: A propriedade edgeForExtendedLayout usa o tipo UIRectEdge, que especifica cada um dos retângulos de quatro bordas, além de especificar nenhum e todos. Use edgeForExtendedLayout para especificar quais bordas de uma vista devem ser estendidas, independentemente da translucidez da barra. Por padrão, o valor dessa propriedade é UIRectEdgeAll. ECSlidingViewController usa esse valor para decidir qual das bordas das vistas se estender para o recipiente. Se uma borda não for estendida, ela será colocada no guia de layout. Este é o mesmo comportamento que os contêineres do controlador de visão UIKit, exceto que as bordas laterais têm significado. Deixando UIRectEdgeTop fora da máscara edgeForExtendedLayout colocará a borda superior no guia de layout superior. Deixando UIRectEdgeBottom fora da máscara edgeForExtendedLayout colocará a borda superior no guia de layout inferior. Deixando UIRectEdgeLeft fora da máscara edgeForExtendedLayout colocará a borda esquerda para onde a vista superior da borda direita seria quando ancorada à esquerda. Isso afeta somente os controladores de exibição usados ​​como underRightViewController. Ele pode ocupar toda a largura do recipiente ou então igualará o valor revelado (seja ele fixo ou calculado). Deixando UIRectEdgeRight para fora da máscara edgeForExtendedLayout colocará a borda direita para onde as vistas superiores deixaram a borda seria quando ancorado direito. Isso afeta somente os controladores de exibição usados ​​como underLeftViewController. Ele pode ocupar toda a largura do recipiente ou então igualará o valor revelado (seja ele fixo ou calculado). O layout para as vistas superior e inferior pode ser personalizado. Isso é feito criando um objeto que está em conformidade com o protocolo ECSlidingViewControllerLayout e devolvendo-o no método de delegação de controladores de exibição deslizante: slidingViewController: layoutControllerForTopViewPosition: ECSlidingViewControllerLayout tem um único método para implementar: Você deverá retornar um CGRect representando um quadro para o viewController e TopViewPosition. Você pode retornar CGRectInfinite para retornar ao layout padrão. Retorna um CGRect que é calculado com base no quadro de visualizações do slidingViewController s. Se for corrigido ou baseado no quadro das telas, as mudanças de rotação e limites podem quebrar o layout. Posicione a vista superior de acordo com os valores ancorados do slidingViewController s. Mantenha a semântica do topViewPosition. Por exemplo, se o topViewPosition for ECSlidingViewControllerTopViewPositionAnchoredRight. Em seguida, posicione a vista superior em algum lugar à direita. Como as acima são sugestões. Você não precisa segui-los. Apenas saiba as conseqüências que você pode quebrar o layout de rotação ou a semântica da API ECSlidingViewController.

No comments:

Post a Comment