O SwiftUI é compatível com versões anteriores do iOS 12.xe mais antigo?


123

Se eu tiver um aplicativo feito com SwiftUI, ele funcionará para iOS abaixo de iOS 13?


1
Por que você não tenta? O Xcode 11 beta está disponível para download e os tutoriais estão aqui developer.apple.com/tutorials/swiftui .
— Martin R

1
Pessoal, alguém sabe por que minha resposta excluída por @ Jean-François Fabre
— CrazyPro007

10
NÃO, o SwiftUI não funciona com iOS 12.x e anteriores.
— ystack

Respostas:


89

Acabei de verificar no Xcode 11 e posso confirmar que não será compatível com versões anteriores, como pode ser visto na Viewimplementação do SwiftUI :

/// A piece of user interface.
///
/// You create custom views by declaring types that conform to the `View`
/// protocol. Implement the required `body` property to provide the content
/// and behavior for your custom view.
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
public protocol View : _View {

    /// The type of view representing the body of this view.
    ///
    /// When you create a custom view, Swift infers this type from your
    /// implementation of the required `body` property.
    associatedtype Body : View

    /// Declares the content and behavior of this view.
    var body: Self.Body { get }
}

7
Pelo menos mais 5 anos? Então você só usa APIs disponíveis no iOS 7 e inferior no momento?
— David Monagle

5
O mais estranho é que você pode fazer um aplicativo SwiftUI com xcode 11 no Mojave (10.4) que só rodará no Catalina (10.5)
— Túlio Calazans

34

Acho que não, porque todas as bibliotecas já estão anotadas para iOS 13 ou superior.

Além disso, na documentação , a Apple menciona claramente as versões compatíveis:

  • iOS13.0 + beta
  • macOS10.15 + beta
  • tvOS 13.0+ beta
  • watchOS 6.0+ beta

insira a descrição da imagem aqui


32

SwiftUI e Combine usam Tipos de Retorno Opaco no Swift 5.1 e, uma vez que Tipos de Retorno Opaco (junto com outros recursos) são implementados no Swift 5.1 e devido à natureza de sua implementação, eles não podem ser implantados novamente no Swift 5.0 (ao contrário do DSL ou Property-Wrappers ), e como o iOS 13 é o SDK do iOS mais antigo que contém o tempo de execução Swift 5.1 no sistema operacional, a resposta à pergunta é não e o SwiftUI e o Combine não podem ser usados ​​em versões anteriores do iOS.

A menos que a Apple forneça uma maneira de agrupar o tempo de execução do Swift 5.1 (ou versões futuras) com o aplicativo, como costumava fazer com as versões anteriores do Swift, mas uma vez que aumentará o tamanho do App e adicionará sobrecarga a todo o sistema novamente, duvido que isso vá nunca acontecer.

Ele pode ser compatível

O Swift 5.1 ainda não foi lançado e SwiftUIusa recursos como tipos de retorno opaco , DSL , propertyDelegate (apresentado no WWDC como propertyWrapper ) e etc, que estarão disponíveis apenas no Swift 5.1. Como o Swift 5 é binário estável, acho que não foi possível usar estruturas Swift incorporadas dentro do Xcode11, portanto, eles reimplementaram esses recursos no núcleo do Cocoa e os marcaram como iOS13 + disponível até o lançamento do Swift 5.1.

Minhas suposições são baseadas no fato de que Ordered Collection Diffing e DSL estarão disponíveis no Swift 5.1 e não terão correlações com o Xcode ou o ecossistema da Apple, mas também serão marcados como @available(iOS13,...). Isso significa que eles tiveram que marcar tudo usando os recursos do Swift 5.1 com o atributo de disponibilidade do iOS. Alguns deles serão removidos assim que o Swift 5.1 for lançado, mas não podemos ter certeza sobre isso SwiftUIe a Combinemenos que a Apple diga o contrário. Isso também é mencionado na proposta do DSL :

Implementação: PR . Observe que a implementação na visualização do desenvolvedor do Xcode usa uma transformação um pouco mais simples do que a descrita aqui. O PR vinculado reflete a implementação na visualização, mas está em desenvolvimento ativo para corresponder a esta proposta.

Portanto, a limitação de incompatibilidade com versões anteriores pode ser removida quando o Swift 5.1 for lançado, mas realmente precisa ser esclarecido pela equipe da Apple .


1
alguma atualização disso? PR que você mencionou foi mesclado, Swift 5.1 foi lançado
— user158

@ user158 Acabei de atualizar a resposta e descrevi por que esse recurso não é compatível.
— farzadshbfn

15

Não. O SwiftUI requer um destino de implantação do iOS 13 ou posterior, macOS 10.15 ou posterior, tvOS 13 ou posterior ou watchOS 6 ou posterior. A estrutura contém muitos novos tipos que não existem nas versões mais antigas dos sistemas operacionais.


É possível usar SwiftUI no iOS 13 ao mesmo tempo em que oferece suporte a um destino de implantação inferior. Verifique stackoverflow.com/a/58372597/840742
— Renatus

13

Se você pretende oferecer suporte ao iPhone e não ao iPad, provavelmente espera que a maioria dos usuários atualize para o iOS 13 dentro de 12 a 18 meses (começando com a data de lançamento). Talvez 85-90%? (Acho que a Apple disse que neste momento ainda há 15% das pessoas que não usam o iOS 12). Ainda é um bom tempo, mas você não será capaz de implantar aplicativos SwiftUI imediatamente ou então arriscará alienar muitos usuários.

Também dependendo dos outros 10-15%, isso pode significar muitos usuários (e $$) para você deixados na mesa.

Se você também oferece suporte ao iPad, é mais complicado porque as pessoas não atualizam seus iPads com frequência. Há muitos iPads 2s junto com os iPads de 3ª e 4ª geração ainda disponíveis, que têm apenas 10.3.3 e não podem mais ser atualizados. As pessoas simplesmente não vão se levantar e pagar entre US $ 400 e US $ 1.000 por um novo iPad quando o deles funciona perfeitamente bem.

Sempre há espaço e a necessidade de atualizar o aplicativo, torná-lo melhor, corrigir bugs, que não necessariamente têm nada a ver com o iOS 13. ou seja, encontrar um bug que você não conhecia antes, deixando muitos usuários insatisfeitos. não na versão mais recente do iOS. e nem mesmo falamos sobre clientes corporativos / corporativos que muitas lojas de desenvolvimento suportam. há muito mais resistência nas atualizações do iOS por vários motivos nessa área.

Portanto, antes de ficar todo empolgado com o iOS 13 e o SwiftUI (o que você deve, porque é incrível), de volta ao mundo real, fora do Vale do Silício, isso não vai exatamente se alinhar com o que o consumidor médio espera e você precisará oferecer suporte dispositivos mais antigos e precisam porque há muitas pessoas que você estaria alienando.


1
Eu conheço várias pessoas em iPhones "sem suporte", então você nunca vai chegar a 100% para a versão mais recente do iOS. Eu sei que estarei pensando muito sobre meu próximo telefone quando o atual morrer
— Gavin

@cspam Embora suas suposições possam ser corretas, elas não respondem à pergunta.
— user1892364

O iOS 12 não deixou de oferecer suporte a mais de 10% dos dispositivos, então é difícil dizer se podemos esperar as mesmas taxas de adoção para o iOS 13.
— Casper Zandbergen

O SwiftUI precisará oferecer suporte a dispositivos mais antigos e precisa porque há muitas pessoas que você estaria alienando! thumb
— Trevor

9

Com base na documentação da Apple, ele está disponível apenas a partir do iOS 13, infelizmente.

https://developer.apple.com/documentation/swiftui/


Tudo o que a documentação vinculada diz é que você precisa usar o iOS 13 SDK (ou seja, Xcode 11). Isso não significa que a versão iOS mínima suportada do dispositivo deve ser iOS 13 ... você pode suportar versões mais antigas do iOS perfeitamente ...
— escalonado


6

só funciona para ios 13 ou posterior

você ainda pode anexar seu SwiftUIcódigo usando

@available(iOS 13.0, *)

se você ainda usa o Xcode abaixo do Xcode 11 e tem o código SwiftUI, pode envolvê-lo com

#if canImport(SwiftUI)
...
#endif

Isso pode corrigir o problema ao compilar com Xcode abaixo de Xcode 11


4

Como todos disseram, não será compatível com versões anteriores do iOS. Mas dado que a Apple tem uma base de instalação consistente de seu iOS mais recente, e também dado que o iOS 13 requer iPhone 6S ou posterior, iPad Air 2 ou posterior, o novo iPad mini 4 e iPhone SE. A grande maioria dos usuários será capaz de instalar o iOS 13 e desfrutar de aplicativos SwiftUI adoráveis.


3
Meu iPad não faz o corte para iOS 13, e dado que ainda está forte e vai ser substituído por um tempo (espero) aqui, esperando que os aplicativos que eu gosto / preciso não joguem dispositivos antigos à deriva.
— Gavin de

3

Como todas as pessoas antes de mim mencionaram, é muito claro que exigirá o iOS 13 ou posterior. Mas, como um novo desenvolvedor de iOS, estava preocupado em até que ponto deveria adotar o SwiftUI em comparação com o UIKit. Já construí alguns pequenos projetos com o UIKit e fui a algum lugar avançado com ele.

Mas quando o SwiftUI começou, como combinar os dois. O artigo no link a seguir coloca tudo em contexto: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both

Minha única preocupação agora é que percebi com o Xcode 11 que um projeto Xcode não pode combinar Storyboards e SwiftUI.


3

Infelizmente não, o SwiftUI só é permitido no iOS 13 e superior. Ele foi introduzido na estrutura do iOS 13. Antes do iOS 13, tudo era construído usando a estrutura Obj-C (incluindo Swift).

No lado direito da documentação dev, ele mostra as versões suportadas de iOS, macOS, tvOS, watchOS, etc.

https://developer.apple.com/documentation/swiftui/

Espero que isto ajude!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.