Si j'ai une application créée avec SwiftUI, fonctionnera-t-elle pour iOS sous iOS 13?
Si j'ai une application créée avec SwiftUI, fonctionnera-t-elle pour iOS sous iOS 13?
Réponses:
Je viens de le vérifier dans Xcode 11 et je peux confirmer qu'il ne sera pas rétrocompatible, comme on peut le voir dans l' View
implémentation de 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 }
}
Je ne pense pas, car toutes les bibliothèques sont déjà annotées pour iOS 13 ou supérieur.
De plus, dans la documentation , Apple mentionne clairement les versions prises en charge:
SwiftUI et Combine utilisent Opaque-Return-Types dans Swift 5.1 et puisque les Opaque-Return-Types (avec d'autres fonctionnalités) sont implémentés dans Swift 5.1 et en raison de la nature de leur implémentation, ils ne peuvent pas être redéployés sur Swift 5.0 (contrairement à DSL ou Property-Wrappers ), et parce que iOS 13 est le premier SDK iOS qui contient le runtime Swift 5.1 dans le système d'exploitation, la réponse à la question est donc non et SwiftUI et Combine ne peuvent pas être utilisés sur les versions antérieures d'iOS.
À moins que Apple ne fournisse un moyen de regrouper le runtime Swift 5.1 (ou les versions futures) avec l'application comme il le faisait avec les versions précédentes de Swift, mais comme cela augmentera la taille de l'application et ajoutera à nouveau une surcharge à l'ensemble du système, je doute que cela jamais arriver.
Swift 5.1 n'est pas encore publié et SwiftUI
utilise des fonctionnalités telles que les types de retour opaques , DSL , propertyDelegate (introduit dans WWDC en tant que propertyWrapper ) et etc., qui ne seront disponibles que dans Swift 5.1. Étant donné que Swift 5 est binaire stable, je suppose qu'il n'était pas possible d'utiliser des frameworks swift intégrés dans Xcode11, ils ont donc réimplémenté ces fonctionnalités dans le noyau de Cocoa et les ont marquées comme iOS13 + disponibles jusqu'à la sortie de Swift 5.1.
Mes hypothèses sont basées sur le fait que, Ordered Collection Diffing et DSL seront disponibles dans Swift 5.1 et n'ont aucune corrélation avec Xcode ou l'écosystème d'Apple, mais ils sont également marqués comme @available(iOS13,...)
. Cela signifie qu'ils devaient tout marquer à l'aide des fonctionnalités de Swift 5.1 avec l'attribut de disponibilité iOS. Certains d'entre eux seront supprimés une fois que Swift 5.1 sera publié, mais nous ne pouvons pas en être sûrs SwiftUI
et Combine
sauf indication contraire d'Apple. Ceci est également mentionné dans la proposition de DSL :
Mise en œuvre: PR . Notez que l'implémentation dans l'aperçu du développeur Xcode utilise une transformation un peu plus simple que celle décrite ici. Le PR lié reflète la mise en œuvre dans l'aperçu mais est en cours de développement actif pour correspondre à cette proposition.
Donc, la limitation d'incompatibilité vers l'arrière pourrait être levée lorsque Swift 5.1 sera publié, mais elle doit vraiment être clarifiée par l'équipe Apple .
Non. SwiftUI nécessite une cible de déploiement d'iOS 13 ou version ultérieure, macOS 10.15 ou version ultérieure, tvOS 13 ou version ultérieure, ou watchOS 6 ou version ultérieure. Le framework contient de nombreux nouveaux types qui n'existent pas sur les anciennes versions des systèmes d'exploitation.
Si vous prenez des photos pour prendre en charge l'iPhone et non l'iPad, vous pouvez probablement vous attendre à ce que la plupart des utilisateurs passent à iOS 13 dans les 12 à 18 mois (à compter de la date de sortie). Peut-être 85-90%? (Je pense qu'Apple a dit à ce stade qu'il y avait encore 15% de personnes qui ne sont pas sur iOS 12) C'est encore un moment où vous ne serez pas en mesure de déployer des applications SwiftUI tout de suite, sinon vous risquez d'aliéner beaucoup d'utilisateurs.
Selon ce que sont les 10 à 15% restants, cela pourrait signifier que beaucoup d'utilisateurs (et $$) pour vous sont restés sur la table.
Si vous supportez également l'iPad, c'est plus compliqué car les gens ne mettent pas à niveau leur iPad aussi souvent. Il y a beaucoup d'iPad 2 ainsi que d'iPad de 3e et 4e génération encore à l'état sauvage, qui n'ont que 10.3.3 et ne peuvent plus être mis à niveau. Les gens ne vont tout simplement pas se lever et payer entre 400 $ et 1000 $ pour un nouvel iPad lorsque le leur fonctionne parfaitement.
Il y a toujours de la place et un besoin de mettre à jour l'application, de l'améliorer, de corriger des bugs, qui n'ont pas forcément quelque chose à voir avec iOS 13. c'est-à-dire trouver un bogue dont vous n'aviez pas connaissance auparavant, ce qui rend beaucoup d'utilisateurs mécontents. . pas sur la dernière version iOS. et nous n'avons même pas parlé des clients entreprise / entreprise pris en charge par de nombreux ateliers de développement. il y a beaucoup plus de retours sur les mises à jour iOS pour diverses raisons dans ce domaine.
Donc, avant de vous enthousiasmer pour iOS 13 et SwiftUI (ce que vous devriez absolument parce que c'est génial), de retour dans le monde réel, en dehors de la Silicon Valley, cela ne correspondra pas exactement à ce que le consommateur moyen attend et vous devrez le soutenir. appareils plus anciens et en ont besoin, car il y a trop de personnes que vous aliéneriez.
Basé sur la documentation Apple, il n'est disponible qu'à partir d'iOS 13, malheureusement.
Il est compatible avec iOS 13+. Voici le lien vers sa documentation.
https://developer.apple.com/documentation/swiftui/
Même Xcode 10 ne le prend pas en charge. Vous devez utiliser Xcode 11 qui est en version bêta à compter du (3 juin 2019). https://developer.apple.com/tutorials/swiftui/creating-and-combining-views
fonctionne uniquement pour ios 13 ou version ultérieure
vous pouvez toujours joindre votre SwiftUI
code en utilisant
@available(iOS 13.0, *)
si vous utilisez toujours Xcode sous Xcode 11 et que vous avez un code SwiftUI, vous pouvez l'envelopper avec
#if canImport(SwiftUI)
...
#endif
Cela peut résoudre le problème lors de la compilation avec Xcode sous Xcode 11
Comme tout le monde l'a dit, il ne sera pas rétrocompatible avec les anciennes versions d'iOS. Mais étant donné qu'Apple a toujours une base d'installation élevée de son dernier iOS, et aussi étant donné qu'iOS 13 nécessite l'iPhone 6S ou une version ultérieure, l'iPad Air 2 ou une version ultérieure, le nouvel iPad mini 4 et l'iPhone SE. La grande majorité des utilisateurs pourront installer iOS 13 et profiter de belles applications SwiftUI.
Comme tous les gens avant moi l'ont mentionné, il est très clair que cela nécessitera iOS 13 ou une version ultérieure. Mais en tant que nouveau développeur iOS, je me demandais dans quelle mesure je devrais adopter SwiftUI par rapport à UIKit. J'ai déjà construit quelques petits projets avec UIKit, et je suis allé quelque part avancé avec.
Mais comme SwiftUI a commencé, comment les combiner. L'article du lien suivant met tout en contexte: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
Ma seule préoccupation maintenant est que j'ai remarqué avec Xcode 11 qu'un projet Xcode ne peut pas combiner à la fois Storyboards et SwiftUI.
Malheureusement non, SwiftUI n'est autorisé que dans iOS 13 et supérieur. Il a été introduit dans le framework iOS 13. Avant iOS 13, tout était construit à l'aide du framework Obj-C (y compris Swift).
Sur le côté droit de la documentation de développement, il montre les versions prises en charge d'iOS, macOS, tvOS, watchOS, etc.
https://developer.apple.com/documentation/swiftui/
J'espère que cela t'aides!