iOS 11: O que mudou?

A #WWDC17 chegou ao fim ūüėĒ e a essa altura voc√™ j√° deve ter visto todas as novidades do iOS 11, mas talvez esteja se perguntando: o que mudou para os desenvolvedores?

Peraí! Não viu as novidades? Não tem problema, dê uma olhadinha nesse post do Blog do iPhone que tem uma lista bem bacana.

Abaixo separamos algumas funcionalidades bem interessante para começar a explorar o iOS 11. Para uma lista completa de mudanças não deixe de ver a documentação oficial.

Arrastar e Soltar

Nessa versão o iPad ganhou uma função muito bem vinda: Arrastar e Soltar, com isso a produtividade dos usuários irá melhorar muito. Com poucas linhas de código podemos implementar essa função no nosso aplicativo.

O suporte ao Arrastar e Soltar são nativos para os seguinte elementos: TableView, CollectionView, TextView, TextField, WebView e também estão integrados ao UIPasteConfiguration. Tornando a adoção dessa função muito fácil.

NFC

No iPhone 7 e 7 Plus - e provavelmente aparelhos futuros - o novo sistema operacional vai permitir que os desenvolvedores tenham acesso ao NFC. Agora será possível usar o CoreNFC para ler tags dos tipos 1 à 5 em NFC Data Exchange Format (NDEF). O código é bem simples, mas o processo é tedioso e envolve:

  • Cria√ß√£o manual de App ID e Provisioning Profile no portal de desenvolvedores;
  • Configura√ß√£o manual dos Entitlements na aplica√ß√£o;
  • Ajustes no Info.plist;

Passado todo esse transtorno, o processo de leitura é bem simples, bastando:

  • Importar o framework CoreNFC;
  • Criar uma inst√Ęncia do leitor;
  • Come√ßar a escanear;
  • Receber as informa√ß√Ķes via delegate;

Manipulação de Arquivos

Além do novo aplicativo nativo Files, estão disponíveis novas APIs para a manipulação de arquivos. Podemos acessar um visualizador de arquivos (locais e nuvem) através do UIDocumentBrowserViewController e de forma altamente customizável.

Lembre-se de coordenar o acesso aos arquivos utilizando NSFileCoordinator ou UIDocument.

Nova Barra de Navegação

Tivemos uma pr√©via dessa novidade com o aplicativo M√ļsica ainda no iOS 10, agora a barra de navega√ß√£o ficou um pouco maior para poder abrigar o t√≠tulo em letras maiores e uma barra de busca. Por√©m a barra diminui quando a tela √© movida para cima, ganhando mais espa√ßo para exibir o conte√ļdo.

A implementação não é automática, porém é bem simples, temos duas propriedades a serem ajustadas. Uma faz com que o título fique no tamanho grande e outra altera o modo de exibição durante a navegação.

A sugestão da Apple é que a primeira tela da navegação seja com título grande e todas as seguintes não. Esse já é o comportamento padrão quando a funcionalidade é adotada.

√Ārea Segura

Como a nova barra de navega√ß√£o pode variar a altura, agora temos uma maneira bem simples de ajustar o conte√ļdo de acordo com o tamanho dela ‚Äď caso seja necess√°rio j√° que os componentes padr√Ķes fazem isso automaticamente.

Usando a propriedade .top do safeAreaInsets temos o valor atualizado da altura da barra. Também existe a propriedade .bottom que nos retorna a altura da barra inferior (caso exista, ex: UITabBar).

Al√©m dos insets podemos usar a √°rea segura como √Ęncora do AutoLayout atrav√©s do safeAreaLayoutGuide e com isso automatizar o processo de ajuste do conte√ļdo de acordo com as varia√ß√Ķes da √°rea.

O UIScrollView agora se ajusta sozinho usando a área segura e não mais o contentInset, deixando ele livre para ser manipulado por nós.

A√ß√Ķes ao Deslizar

Podemos incluir a√ß√Ķes de c√©lula do UITableView no lado direito e esquerdo e a√ß√Ķes padr√£o para serem executadas quando a c√©lula for deslizada at√© o final.

S√≥ tome cuidado para essa n√£o ser a √ļnica maneira de se realizar a a√ß√£o, pois dessa forma elas est√£o escondidas do usu√°rio.

Arquivando Tipos Nativos

O Swift 4 e o Foundation fizeram uma aproximação muito importante nessa atualização, o protocolo Codable foi introduzido, nos possibilitando codificar tipos nativos da Swift usando NSCoding, JSON e Plist. Com isso, podemos decodificar JSON diretamente para nosso objeto modelo.

KVO

Para os amantes do Key-Value Observing ele chegou na Swift, e melhor ainda, usando closures ‚̧ԳŹ. Tamb√©m foi introduzida uma forma de declarar os keypath de forma literal, deixando seu uso muito mais pr√°tico e seguro.

Preenchimento de Senhas

Agora o iOS detecta se o aplicativo tem uma tela de acesso com nome de usu√°rio e senha, e exibe um campo de preenchimento com as senhas do iCloud.

Por padrão será exibida uma lista com todas as senha e um campo de busca, para melhorar esse processo, devemos fazer uma alteração no Entitlements e adicionar um JSON no servidor. Essas etapas são basicamente as mesmas da implementação dos Links Universais.

Tem mais?

Muito mais! Diversas outras funcionalidades e melhorias foram feitas nessa atualização, como eles mesmo disseram o foco foi produtividade, refinamentos e melhorias.

Além de tudo que detalhamos, algumas outras merecem ser citadas:

  • Assets Catalog
    • Podemos adicionar cores (inclusive wide gamut);
    • O √≠cone agora participa do App Thinning;
    • As imagens em PDF podem manter os dados vetoriais e serem redimensionadas de acordo com o Dynamic Type selecionado;
  • AutoLayout
    • Agora o UIScrollView usa dois sistemas de √Ęncora, um externo e outro interno, simplificando muito a centraliza√ß√£o no zoom;
    • Espa√ßamento entre UILabels recomendado pelo sistema usando √Ęncoras de baseline com Dynamic Type;
  • Dynamic Type
    • Ajuste das fontes customizadas atrav√©s do UIFontMetrics que calcula o tamanho proporcional ao padr√£o do sistema;
    • Ajustar tamanhos arbitr√°rios mantendo a propor√ß√£o correta com UIFontMetrics (ex: altura de um UIButton);

Nas próximas semanas iremos detalhar diversas dessas funcionalidades com exemplos e muito código, não perca!

Até a próxima! >}