Compartilhar via


Opções de layout no Xamarin.iOS

Há dois mecanismos diferentes para controlar o layout quando um modo de exibição é redimensionado ou girado:

  • Dimensionamento automático – O inspetor de dimensionamento automático no designer fornece uma maneira de definir as AutoresizingMask propriedades. Isso permitirá que um controle seja ancorado nas bordas de seu contêiner e/ou fixe seu tamanho. O dimensionamento automático funciona em todas as versões do iOS. Isso é descrito com mais detalhes abaixo
  • Layout automático – Um recurso, introduzido no iOS 6, que permite um controle refinado sobre as relações dos controles da interface do usuário. Ele permitirá o controle das posições dos elementos em relação a outros elementos na superfície de projeto. Este tópico é abordado com mais detalhes no guia Layout automático com o Xamarin iOS Designer .

Dimensionamento automático

Quando um usuário redimensiona uma janela, como quando o dispositivo é girado e a orientação muda, o sistema redimensiona automaticamente as Visualizações dentro dessa janela de acordo com suas regras de dimensionamento automático. Essas regras podem ser definidas em C# usando a AutoresizingMask propriedade do ou no Painel de UIView Propriedades do iOS Designer, conforme ilustrado abaixo:

A captura de tela mostra o Painel de Propriedades do designer de E/S.

Quando um controle é selecionado, isso permite que você especifique manualmente o local e as dimensões do controle, bem como escolher o comportamento de dimensionamento automático. Conforme ilustrado na captura de tela abaixo, podemos usar as molas e escoras no controle de dimensionamento automático para definir a relação da exibição selecionada com seu pai:

A captura de tela mostra o controle Autosizing no Bloco de Propriedades do designer de E/S.

O ajuste de uma mola fará com que o modo de exibição seja redimensionado com base na largura ou altura de seu modo de exibição pai. O ajuste de uma estrutura fará com que a visualização mantenha uma distância constante entre ela e sua visão pai, nessa borda específica.

Essas configurações também podem ser definidas no código:

textfield1.Frame = new RectangleF(15, 277, 79, 27);
textfield1.AutoresizingMask = UIViewAutoresizing.FlexibleRightMargin | UIViewAutoresizing.FlexibleBottomMargin;

Para testar as configurações de Autodimensionamento, habilite diferentes Orientações de Dispositivo com Suporte nas opções do projeto:

Configurações de dimensionamento automático

No código por trás podemos usar o seguinte código, que faz com que os dois controles de texto sejam redimensionados horizontalmente:

textview1.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
textfield1.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
imageview1.AutoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleLeftMargin;

Também podemos ajustar os controles usando o Designer. Selecionar as escoras conforme exibido abaixo fará com que a imagem permaneça alinhada à direita sem ser cortada da parte inferior da exibição:

A captura de tela mostra o controle Autosizing com a esquerda e a parte inferior selecionadas.

Estas capturas de tela mostram como os controles se redimensionam ou se reposicionam quando a tela é girada:

A captura de tela mostra uma exibição de dispositivo móvel em retrato e paisagem com texto e gráfico ajustados.

Observe que o modo de exibição de texto e o campo de texto se esticam para manter as mesmas margens esquerda e direita, devido à FlexibleWidth configuração. A imagem tem a margem superior e esquerda flexível, o que significa que preserva as margens inferior e direita – mantendo a imagem em exibição quando a tela é girada. Layouts complexos geralmente exigem uma combinação dessas configurações em cada controle visível para manter a interface do usuário consistente e evitar que os controles se sobreponham quando os limites da exibição forem alterados (devido à rotação ou outro evento de redimensionamento).