Sunday 25 March 2018

Edgesforextlaylayout uiviewcontroller interfaceorientation


Eu tenho um UINavigationController como meu UIWindows rootViewController e um UIViewController (ControllerA) que suporta apenas a orientação Portrait é adicionada ao UINavigationController como rootViewController. Em algum momento depois, substituo UINavigationControllers rootViewController por um novo UIViewController (ControllerB). O ControllerB suporta tanto Retrato como Paisagem. Eu quero que minha tela inicial (ControllerA) apenas funcione em Retrato enquanto o resto do aplicativo pode suportar o retrato e a paisagem. Se eu começar meu aplicativo em Paisagem que não é manipulado pelo ControllerA e, em seguida, mude para o ControllerB, meu conteúdo (barra de status) ainda está em Retrato. Se eu girar manualmente o dispositivo neste ponto, eu tenho o layout de conteúdo correto. Como posso fazer o ControllerB renderizar-se na orientação do dispositivo? É o que eu vejo do ControllerA e ControllerB viewWillAppear method: Guia de Layout Uma das responsabilidades de um contêiner de controlador de exibição é projetar suas visualizações de controladores de exibição filho. 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 inferior 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 anchorRightPeekAmount anchorRightRevealAmount Definir a quantidade de revelar em um lado irá calcular a quantidade de espiar para o mesmo lado e vice-versa. A propriedade que você definir 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 para fora da máscara edgesForFieldedLayout colocará a borda superior no guia de layout inferior. Deixando UIRectEdgeLeft para fora da máscara edgesForFundamentExtendido irá colocar a borda esquerda para onde a borda direita vistas superior seria quando ancorado à esquerda. Isso afeta somente os controladores de exibição usados ​​como underRightViewController. Ele pode ocupar a largura total do recipiente ou então ele será igual à quantidade de revelação (se 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 a largura total do recipiente ou então ele será igual à quantidade de revelação (se 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 retorná-lo no método de delegado de controladores de exibição deslizante: slidingViewController: layoutControllerForTopViewPosition: ECSlidingViewControllerLayout tem um único método a ser implementado: Você deve retornar um CGRect representando um quadro para o viewController determinado e TopViewPosition. Você pode retornar CGRectInfinite para alternar no 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 da topViewPosition. Por exemplo, se a topViewPosition é ECSlidingViewControllerTopViewPositionAnchoredRight. Em seguida, posicione a vista superior em algum lugar para a direita. Como as acima são sugestões. Você não tem que segui-los. Basta saber as conseqüências que você pode quebrar o layout de rotação ou a semântica da API ECSlidingViewController.

No comments:

Post a Comment