← Todos os Posts

A era do iPhone redimensionável: prepare seu app antes de setembro

Como preparar um app de iPhone para telas redimensionáveis? O SDK contra o qual você faz o link é a linha que a Apple traça: o Device Hub do Xcode 27 trata explicitamente o modo de redimensionamento como não suportado para apps linkados contra o iOS 26 ou anterior, e toda entrada sobre redimensionamento nas notas de versão do iOS 27 vem condicionada a “compilado com o SDK do iOS 27”.12 Depois: audite cada suposição de tamanho fixo (leituras de UIScreen.main.bounds, frames fixos no código, layouts condicionados à orientação), apoie-se nas classes de tamanho e nos contêineres do SwiftUI que se adaptam ao layout, e teste continuamente nos previews Resizable Canvas do Xcode 27 e no modo de redimensionamento do Device Hub.2 O pré-requisito de orientação que travava o redimensionamento contínuo aparece como Fixed nas notas atuais, então o caminho está livre.1

As betas de outono da Apple passaram o verão convergindo para uma única mensagem aos desenvolvedores de iPhone: pare de assumir um retângulo fixo. A evidência está no ferramental e nas notas de versão, não nos keynotes: o redimensionamento chega com o link para o SDK do iOS 27, o canvas de preview redimensiona à vontade, e as notas de versão removeram o último obstáculo estrutural conforme o ciclo de betas amadureceu. Seja qual for o hardware que chegar neste outono, o contrato de software já mudou.

TL;DR: o iOS 27 traz redimensionamento contínuo para apps compilados com o novo SDK; o Xcode 27 entrega as superfícies para testar isso (previews Resizable Canvas, modo de redimensionamento do Device Hub); e as notas de versão atuais — a edição da beta 7, com a beta 7 liberada em 24 de agosto — listam a condição de orientação como Fixed: ela saiu dos problemas conhecidos para os problemas resolvidos entre as edições da beta 4 e da beta 6, e as orientações declaradas não decidem mais se o seu app redimensiona.1 O trabalho é sobretudo de subtração: encontre os lugares em que o seu layout acredita em um único tamanho de tela e remova essa crença. Abaixo, o checklist, na ordem em que eu o percorreria.

Por que agora

Três fatos datados acertam o relógio:

  1. A beta 7 chegou em 24 de agosto, com o ciclo em sua fase de estabilidade: as betas tardias da Apple corrigem em vez de acrescentar, e as versões finais saíram em setembro todos os anos.1
  2. A fronteira do redimensionamento é o link com o SDK. As notas de versão do Xcode 27 descrevem entrar no modo de redimensionamento do Device Hub “com um app linkado contra um SDK do iOS 26 ou anterior” como algo “não suportado”.2 O padrão atravessa também as notas do iOS: toda entrada sobre redimensionamento vem condicionada a “compilado com o SDK do iOS 27”. Recompile e você estará do lado redimensionável dessa linha; fique no SDK antigo e estará abrindo mão do rumo que a plataforma tomou.
  3. A última trava estrutural caiu. Na era da beta 4, um app de iPad cujo UISupportedInterfaceOrientations omitia qualquer uma das quatro orientações era tratado como não redimensionável de forma contínua: um problema conhecido cuja solução documentada tinha um custo não documentado que detalhei no post sobre essa solução de contorno. Esse problema saiu dos problemas conhecidos e entrou nos resolvidos entre as edições da beta 4 e da beta 6 das notas, e a edição atual o marca como Fixed: “A partir do iOS 27, as orientações de interface suportadas não devem mais ser uma condição para o redimensionamento contínuo”. A lista de problemas conhecidos do UIKit nas notas da beta 7 está vazia.1

Somando tudo: a plataforma agora espera que o seu layout seja função do contêiner, e não de uma ficha técnica de aparelho. O iPad ensinou essa lição primeiro com o multitarefa; o iOS 27 estende o mesmo contrato ao iPhone.

O checklist

1. Recompile com o SDK do iOS 27 e depois olhe de verdade

A adesão é a recompilação. Antes de mudar uma linha de código de layout, compile com o Xcode 27, abra o modo de redimensionamento do Device Hub e arraste. A maioria dos apps SwiftUI bem fatorados sobrevive a esse primeiro contato melhor do que seus autores esperam; o que quebra é instrutivo, e quebra sempre no mesmo punhado de lugares — que é justamente do que trata o resto deste checklist.

2. Cace as crenças de tamanho fixo

Os culpados clássicos, na ordem em que costumam morder:

  • UIScreen.main.bounds usado como “o tamanho da tela”. Em um mundo redimensionável não existe o tamanho da tela, e UIScreen.main está formalmente descontinuado desde o iOS 26. Derive os tamanhos da sua window scene ou, no SwiftUI, do contêiner, via um GeometryReader usado com parcimônia ou um containerRelativeFrame(_:) usado deliberadamente.
  • Frames fixos no código e números mágicos calibrados para aparelhos específicos (“390 pontos de largura significa iPhone”). Qualquer inferência de aparelho do tipo if width == <number> vai mentir para você.
  • Layout condicionado à orientação em vez do tamanho. As verificações de orientação sempre foram um substituto; com o iOS 27 desacoplando orientações do redimensionamento, esse substituto virou oficialmente peso morto. Ramifique pelas classes de tamanho horizontal e vertical, que é para isso que elas existem.
  • Cache de dimensões no lançamento. Tudo que é medido uma única vez na inicialização e guardado fica obsoleto depois do primeiro redimensionamento.

3. Deixe os contêineres adaptáveis fazerem o trabalho deles

O kit de layout moderno do SwiftUI foi feito exatamente para isso: ViewThatFits para escolher entre arranjos, containerRelativeFrame para dimensionar em relação ao contêiner em vez da tela, grids e frames flexíveis para tudo que fica no meio. Se o seu app vem da era do retângulo fixo, a refatoração de maior alavancagem costuma ser trocar um layout estrutural feito de GeometryReader mais aritmética por essas primitivas. Apps UIKit chegam ao mesmo resultado com classes de tamanho e as seções dirigidas pelo ambiente do UICollectionViewCompositionalLayout.

As mudanças de toolbar e de layout no iOS 27 empurram na mesma direção: o framework agora entrega controle explícito nos pontos em que o espaço acaba, e o espaço agora acaba dinamicamente.

4. Teste onde o redimensionamento realmente acontece

O Xcode 27 dá duas superfícies feitas para isso, ambas amadurecidas no início do ciclo de betas:

  • O modo Resizable Canvas nos previews: não está mais restrito a proporções de tamanho específicas (a restrição caiu na beta 2), então dá para arrastar por toda a faixa de formatos que o seu app pode habitar.2
  • O modo de redimensionamento do Device Hub para apps em execução, com as saídas de emergência corrigidas desde a beta 3 (sair do modo de redimensionamento por crash ou indo para segundo plano não trava mais a tela do aparelho até reiniciar).2

Faça uma passagem por cada tela principal em cada um deles. Os bugs que você encontrar vão se concentrar nas telas que faziam cache, supunham ou inferiam.

5. Reexamine as flags que você definiu anos atrás

UIRequiresFullScreen e declarações restritas de UISupportedInterfaceOrientations são como os apps historicamente se livraram das exigências do multitarefa do iPad. Nenhuma das duas está descontinuada, mas as duas agora são estruturais de formas novas: o ciclo de betas passou várias edições acertando como elas interagem com o redimensionamento contínuo, e os problemas conhecidos da era da beta 4 sobre o comportamento de redimensionamento do UIRequiresFullScreen agora aparecem como Fixed entre os problemas resolvidos.1 Se essas chaves estão no seu Info.plist por causa de uma decisão tomada em 2019, este é o mês de tomar essa decisão de novo, de propósito. A análise do custo da solução de contorno cobre os efeitos colaterais do conjunto de orientações que vale conferir antes de ampliar qualquer coisa.

6. Reserve espaço para os efeitos de segunda ordem

Redimensionável significa que o seu texto quebra de outro jeito, suas imagens cortam de outro jeito, sua NavigationSplitView recolhe e expande ao sabor de alguém, e seus estados vazios cuidadosamente ajustados aparecem em proporções que você nunca visualizou no preview. Nada disso é difícil isoladamente. Tudo isso junto é o motivo de o checklist começar agora, e não na semana em que o hardware chegar.

O que eu pularia

Pule especular sobre aparelhos específicos. O contrato de redimensionamento está no SDK que você pode baixar hoje, documentado em notas de versão que você pode ler hoje, testável em um ferramental que saiu na primeira beta do Xcode 27. Se um iPhone dobrável chegar neste outono, os apps que fizeram a lista acima estão prontos; se chegar na primavera que vem, o mesmo trabalho já se paga no multitarefa do iPad e em qualquer outra coisa que a plataforma redimensionar depois. Preparar-se para o mecanismo vence preparar-se para o boato.

Principais conclusões

  • A linha de adesão é o link com o SDK. Recompile com o SDK do iOS 27 e o redimensionamento vira problema e oportunidade do seu app; o Device Hub trata apps de SDK mais antigo no modo de redimensionamento como não suportados.2
  • A trava de orientação caiu. As orientações declaradas não decidem mais o redimensionamento: o problema aparece como Fixed nas notas atuais, e a lista de problemas conhecidos do UIKit está vazia.1
  • O trabalho é apagar suposições, não adicionar recursos. Leituras de tamanho de tela, layouts com números mágicos, substitutos de orientação, caches de inicialização: encontre, troque por layout derivado do contêiner, pronto.
  • Teste nas superfícies reais. Os previews Resizable Canvas e o modo de redimensionamento do Device Hub existem exatamente para isso; uma passagem por cada um, tela a tela, acha a maior parte do que vai morder.

FAQ

O meu app fica redimensionável automaticamente?

O link com o SDK é a fronteira que a Apple traça: as notas de versão do Xcode 27 chamam de não suportado o modo de redimensionamento com apps de SDK do iOS 26 ou anterior, e as notas do iOS condicionam todo comportamento de redimensionamento a compilar com o SDK do iOS 27.12 O que acontece depois depende do seu layout: SwiftUI dirigido pelo contêiner se adapta na maior parte; suposições de tamanho fixo aparecem como bugs.

Ainda preciso declarar as quatro orientações para ser redimensionável de forma contínua?

Não: as notas de versão atuais marcam a condição de orientação como Fixed (ela caiu entre as edições da beta 4 e da beta 6), afirmando que “as orientações de interface suportadas não devem mais ser uma condição para o redimensionamento contínuo”.1 As betas anteriores exigiam a solução das quatro orientações, que tinha efeitos colaterais em todo o app que vale a pena entender se você chegou a publicá-la.

O UIRequiresFullScreen está descontinuado agora?

Não. Ele continua sendo uma chave suportada, e os problemas conhecidos do ciclo de betas sobre o seu comportamento de redimensionamento aparecem como Fixed entre os problemas resolvidos das notas atuais.1 Mas é exatamente o tipo de renúncia de anos atrás que vale a pena redecidir de forma deliberada em uma plataforma que pensa primeiro em redimensionamento.

Quando isso vira urgente?

As versões finais do iOS 27 são esperadas para setembro, e o ciclo de exigência de SDK do outono da Apple significa que os novos envios passam para o SDK do iOS 27 no cronograma habitual da Apple depois disso. O checklist acima é uma semana de trabalho concentrado para a maioria dos apps — tranquilamente concluído antes da temporada de lançamentos se começar agora.

Fontes


  1. Documentação para desenvolvedores da Apple, iOS & iPadOS 27 Release Notes (edição da beta 7, 24 de agosto de 2026). Fonte do status Fixed do problema 166422120: “No iPad, se o seu app de iPad for compilado com o SDK do iOS 27 e o seu UISupportedInterfaceOrientations não incluir as quatro orientações de interface, o app é tratado como não redimensionável de forma contínua. A partir do iOS 27, as orientações de interface suportadas não devem mais ser uma condição para o redimensionamento contínuo”. O problema estava em problemas conhecidos na edição da beta 4 e já constava em problemas resolvidos na edição da beta 6 (cópias arquivadas confirmam); os quatro problemas de redimensionamento com UIRequiresFullScreen da era da beta 4 (178558224, 178559386, 178560235, 178562971) também estão marcados como Fixed entre os problemas resolvidos, e a lista de problemas conhecidos do UIKit na edição da beta 7 está vazia. ↩↩↩↩↩↩↩↩↩↩

  2. Documentação para desenvolvedores da Apple, Xcode 27 Release Notes (beta 6). Fonte para: o modo de redimensionamento do Device Hub com “um app linkado contra um SDK do iOS 26 ou anterior” sendo “não suportado”; “os previews de iOS no modo Resizable Canvas não estão mais restritos a proporções de tamanho específicas”; o bug de exibição corrigido ao sair do modo de redimensionamento; e “o Xcode 27 beta 6 inclui o Swift 6.4 e SDKs para iOS 27, iPadOS 27, tvOS 27, watchOS 27, macOS 27 e visionOS 27”. ↩↩↩↩↩↩↩

Artigos relacionados

iPhone Duo para desenvolvedores: o problema do 1.42 e a lacuna do SDK

iPhone Duo para desenvolvedores: pontos inferidos das capturas do App Store Connect, duas telas, Split View, Touch ID, p…

39 min de leitura

Redimensionamento do iPad no iOS 27: a solução alternativa tem um custo

O iOS 27 ainda condiciona o redimensionamento contínuo no iPad às orientações declaradas. A solução da Apple amplia o co…

13 min de leitura

Projetando para o iPhone Duo: o que se move, o que se divide e o que fica

O guia de design da Apple para o iPhone Duo e três Tech Talks, lidos como regras: duas classes de tamanho no lugar de um…

19 min de leitura