Ao explorar a Área segura encontrada Beta do Xcode9 nos construtores de interface, visualize o visualizador de hierarquia. Fiquei curioso e tentei conhecer a documentação do Safe Area on Apples, em essência o documento diz "A área de visualização que interage diretamente com o layout Automático". Mas não me satisfez, quero saber o uso prático dessa novidade.
Alguém tem alguma pista?
Parágrafo de conclusão do documento da Apple para a área segura.
A classe UILayoutGuide foi projetada para executar todas as tarefas anteriormente executadas pelas visualizações fictícias, mas para fazê-lo de maneira mais segura e eficiente. As guias de layout não definem uma nova exibição. Eles não participam da hierarquia de visualizações. Em vez disso, eles simplesmente definem uma região retangular no sistema de coordenadas da visualização proprietária que pode interagir com o Layout automático.
Respostas:
Quando a visualização é visível na tela, este guia reflete a parte da visualização que não é coberta por outro conteúdo. A área segura de uma exibição reflete a área coberta por barras de navegação, barras de guias, barras de ferramentas e outros ancestrais que obscurecem a exibição de um controlador de exibição. (No tvOS, a área segura incorpora o painel da tela, conforme definido pela
overscanCompensationInsets
propriedade do UIScreen.) Ele também cobre qualquer espaço adicional definido pelaadditionalSafeAreaInsets
propriedade do controlador de exibição . Se a vista não estiver instalada no momento em uma hierarquia de vistas ou ainda não estiver visível na tela, o guia de layout sempre corresponderá às bordas da vista.Para a visualização raiz do controlador de exibição, a área segura nesta propriedade representa toda a parte do conteúdo do controlador de exibição que está obscurecida e quaisquer inserções adicionais que você especificou. Para outras visualizações na hierarquia de visualizações, a área segura reflete apenas a parte dessa visualização que está obscurecida. Por exemplo, se uma visualização estiver totalmente dentro da área segura da visualização raiz do controlador de visualização, as inserções de borda nessa propriedade serão 0.
Aqui está uma referência simples como uma comparação (para gerar um efeito visual semelhante) entre o Guia de Layout existente (Superior e Inferior) e o Guia de Layout de Área Segura.
Layout da área segura:
AutoLayout
Como trabalhar com o Layout de área segura?
Siga estas etapas para encontrar a solução:
Aqui está um exemplo de instantâneo, como habilitar o layout de área segura e editar restrições.
Aqui está o resultado das alterações acima
Projeto de layout com SafeArea
Ao projetar para o iPhone X, você deve garantir que os layouts preencham a tela e não sejam ocultados pelos cantos arredondados do dispositivo, pela caixa do sensor ou pelo indicador de acesso à tela inicial.
A maioria dos aplicativos que usam elementos padrão da interface do usuário fornecidos pelo sistema, como barras de navegação, tabelas e coleções, se adaptam automaticamente ao novo fator de forma do dispositivo. Os materiais de fundo se estendem até as bordas da tela e os elementos da interface do usuário são inseridos e posicionados adequadamente.
Para aplicativos com layouts personalizados, o suporte ao iPhone X também deve ser relativamente fácil, especialmente se o aplicativo usar o Layout automático e seguir os guias de layout de área e margem seguros.
Aqui está o código de exemplo (Ref: Guia de layout de área segura ) :
Se você criar suas restrições no código, use a propriedade safeAreaLayoutGuide do UIView para obter as âncoras de layout relevantes. Vamos recriar o exemplo acima do Interface Builder no código para ver como fica:
Supondo que temos a visão verde como uma propriedade em nosso controlador de exibição:
Podemos ter uma função para configurar as visualizações e restrições chamadas de viewDidLoad:
Crie as restrições de margem inicial e final, como sempre, usando o layoutMarginsGuide da visualização raiz:
Agora, a menos que você esteja direcionando apenas para o iOS 11, será necessário agrupar as restrições do guia de layout de área segura com #available e voltar aos guias de layout superior e inferior das versões anteriores do iOS:
Resultado:
Após a
UIView
extensão, facilite o trabalho com o SafeAreaLayout programaticamente.Aqui está o código de exemplo no Objective-C :
Aqui está a documentação oficial do desenvolvedor da Apple para o Guia de layout de área segura
A Área segura é necessária para lidar com o design da interface do usuário do iPhone-X. Aqui está a diretriz básica de Como criar uma interface de usuário para iPhone-X usando o Layout de área segura
fonte
margins
eview.leadingAnchor
: quando você usalet margins = view.layoutMarginsGuide
e usa mais tardemargins.leadingAnchor
, você está restringindo a vista às margens da vista. Isso adicionará algum espaço extra aos lados. Se você não quer isso , basta usarview.leadingAnchor
eview.trailingAnchor
você não verá nenhum espaço em branco à esquerda ou à direita ...Quero mencionar algo que me chamou a atenção quando estava tentando adaptar um aplicativo baseado em SpriteKit para evitar as arestas arredondadas e o "entalhe" do novo iPhone X, conforme sugerido pelas mais recentes Diretrizes de Interface Humana : A nova propriedade
safeAreaLayoutGuide
dasUIView
necessidades de ser consultado após a visualização ter sido adicionada à hierarquia (por exemplo, ativada-viewDidAppear:
) para relatar um quadro de layout significativo (caso contrário, ele retornará apenas o tamanho da tela inteira).Na documentação da propriedade:
(ênfase minha)
Se você o ler o mais cedo possível
-viewDidLoad:
,layoutFrame
o guia será em{{0, 0}, {375, 812}}
vez do esperado{{0, 44}, {375, 734}}
fonte
UIKit
usa o topLayoutGuide e o bottomLayoutGuide, que éUIView
propriedadeO iOS11 + usa safeAreaLayoutGuide, que também é
UIView
propriedadeAtive o Guia de layout de área segura do inspetor de arquivos.
As áreas seguras ajudam a colocar suas visualizações na parte visível da interface geral.
No tvOS , a área segura também inclui as inserções overscan da tela, que representam a área coberta pelo painel da tela.
Use áreas seguras como auxílio para exibir seu conteúdo como
UIButton
etc.Ao projetar para o iPhone X, você deve garantir que os layouts preencham a tela e não sejam obscurecidos pelos cantos arredondados do dispositivo, pela caixa do sensor ou pelo indicador para acessar a tela inicial.
Verifique se os fundos se estendem até as bordas da tela e se os layouts roláveis verticalmente, como tabelas e coleções, continuam até o final.
A barra de status é mais alta no iPhone X do que em outros iPhones. Se o seu aplicativo assumir uma altura fixa da barra de status para posicionar o conteúdo abaixo da barra de status, você deverá atualizar o aplicativo para posicionar dinamicamente o conteúdo com base no dispositivo do usuário. Observe que a barra de status no iPhone X não muda de altura quando tarefas em segundo plano, como gravação de voz e rastreamento de local, estão ativas
print(UIApplication.shared.statusBarFrame.height)//44 for iPhone X, 20 for other iPhones
A altura do recipiente indicador doméstico é de 34 pontos.
Depois de ativar o Guia de layout de área segura, você pode ver a propriedade de restrições de área segura listada no construtor de interface.
Você pode definir restrições com respectiva de
self.view.safeAreaLayoutGuide
as-ObjC:
Rápido:
fonte
A Apple apresentou o topLayoutGuide e o bottomLayoutGuide como propriedades do UIViewController no iOS 7. Eles permitiram criar restrições para impedir que seu conteúdo fosse oculto pelas barras do UIKit, como status, navegação ou barra de guias. Esses guias de layout foram descontinuados no iOS 11 e substituídos por um único guia de layout de área segura.
Consulte o link para mais informações.
fonte
A Área segura é a área entre os elementos da interface do sistema que são Barra de status, Barra de navegação e Barra de ferramentas ou Barra de guias. Portanto, quando você adiciona uma barra de status ao seu aplicativo, a Área segura diminui. Quando você adiciona uma barra de navegação ao seu aplicativo, a área segura diminui novamente.
No iPhone X, a Área segura fornece inserção adicional das bordas superior e inferior da tela em retrato, mesmo quando nenhuma barra é exibida. Na paisagem, a Área segura é inserida pelas laterais das telas e pelo indicador de casa.
Isso é retirado do vídeo da Apple Designing for iPhone X, onde eles também visualizam como diferentes elementos afetam a Área Segura.
fonte