Wenn ich eine mit SwiftUI erstellte App habe, funktioniert sie für iOS unter iOS 13?
Wenn ich eine mit SwiftUI erstellte App habe, funktioniert sie für iOS unter iOS 13?
Antworten:
Ich habe es gerade in Xcode 11 ausgecheckt und kann bestätigen, dass es nicht abwärtskompatibel ist, wie aus der View
Implementierung von SwiftUI hervorgeht :
/// 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 }
}
Ich denke nicht, da alle Bibliotheken bereits für iOS 13 oder höher kommentiert sind.
In der Dokumentation erwähnt Apple außerdem deutlich die unterstützten Versionen:
SwiftUI und Combine verwenden Opaque-Return-Typen in Swift 5.1. Da Opaque-Return-Typen (neben anderen Funktionen) in Swift 5.1 implementiert sind und aufgrund der Art ihrer Implementierung nicht wieder in Swift 5.0 bereitgestellt werden können (im Gegensatz zu DSL) oder Property-Wrapper ) und da iOS 13 das früheste iOS-SDK ist, das Swift 5.1- Laufzeit im Betriebssystem enthält, lautet die Antwort auf die Frage Nein, und SwiftUI und Combine können in früheren Versionen von iOS nicht verwendet werden.
Es sei denn, Apple bietet eine Möglichkeit, die Swift 5.1- Laufzeit (oder zukünftige Versionen) mit der Anwendung zu bündeln, wie dies bei früheren Swift-Versionen der Fall war. Da dies jedoch die App-Größe erhöht und dem gesamten System erneut Overhead hinzufügt, bezweifle ich dies jemals passieren.
Swift 5.1 ist noch nicht veröffentlicht und SwiftUI
verwendet Funktionen wie undurchsichtige Rückgabetypen , DSL , propertyDelegate (in WWDC als propertyWrapper eingeführt ) usw., die nur in Swift 5.1 verfügbar sein werden . Da Swift 5 binär stabil ist, war es wohl nicht möglich, eingebettete Swift-Frameworks in Xcode11 zu verwenden. Daher haben sie diese Funktionen im Kern von Cocoa erneut implementiert und sie als iOS13 + markiert, bis Swift 5.1 veröffentlicht wird.
Meine Annahmen basieren auf der Tatsache, dass Ordered Collection Diffing und DSL in Swift 5.1 verfügbar sein werden und keine Korrelationen mit Xcode oder Apples Ökosystem aufweisen, aber auch als gekennzeichnet sind @available(iOS13,...)
. Dies bedeutet, dass sie alles mit Swift 5.1-Funktionen mit dem iOS-Verfügbarkeitsattribut markieren mussten. Einige von ihnen werden entfernt bekommen , sobald Swift 5.1 wird freigegeben, aber wir können nicht sicher sein , über SwiftUI
und Combine
es sei denn , Apple - sagt etwas anderes. Dies wird auch im Vorschlag von DSL erwähnt :
Umsetzung: PR . Beachten Sie, dass die Implementierung in der Xcode-Entwicklervorschau eine etwas einfachere Transformation verwendet als die hier beschriebene. Die verknüpfte PR spiegelt die Implementierung in der Vorschau wider, befindet sich jedoch in der aktiven Entwicklung, um diesem Vorschlag zu entsprechen.
Die Einschränkung der Rückwärtsinkompatibilität wird möglicherweise aufgehoben, wenn Swift 5.1 veröffentlicht wird, muss jedoch vom Apple-Team wirklich geklärt werden .
Nein. SwiftUI erfordert ein Bereitstellungsziel von iOS 13 oder höher, macOS 10.15 oder höher, tvOS 13 oder höher oder watchOS 6 oder höher. Das Framework enthält viele neue Typen, die in älteren Versionen der Betriebssysteme nicht vorhanden sind.
Wenn Sie für die Unterstützung des iPhone und nicht des iPad fotografieren, können Sie davon ausgehen, dass die meisten Benutzer innerhalb von 12 bis 18 Monaten (beginnend mit dem Veröffentlichungsdatum) ein Upgrade auf iOS 13 durchführen. Vielleicht 85-90%? (Ich denke, Apple sagte zu diesem Zeitpunkt, dass es immer noch 15% der Leute gibt, die nicht mit iOS 12 arbeiten.) Bis dahin können Sie SwiftUI-Apps jedoch nicht sofort bereitstellen, da sonst die Gefahr besteht, dass viele Benutzer entfremdet werden.
Abhängig von den anderen 10-15% kann dies auch bedeuten, dass viele Benutzer (und $$) für Sie auf dem Tisch liegen bleiben.
Wenn Sie auch das iPad unterstützen, ist es schwieriger, weil die Leute ihre iPads nicht so oft aktualisieren. Es gibt viele iPad 2s zusammen mit iPads der 3. und 4. Generation, die noch in freier Wildbahn sind, nur 10.3.3 haben und nicht mehr upgraden können. Die Leute werden einfach nicht aufstehen und zwischen 400 und 1.000 US-Dollar für ein neues iPad bezahlen, wenn ihr iPad einwandfrei funktioniert.
Es gibt immer Platz und die Notwendigkeit, die App zu aktualisieren, zu verbessern, Fehler zu beheben, die nicht unbedingt etwas mit iOS 13 zu tun haben, dh einen Fehler zu finden, von dem Sie vorher nichts wussten, was viele Benutzer unglücklich macht. . nicht auf der neuesten iOS-Version. und wir haben noch nicht einmal über Unternehmenskunden gesprochen, die von vielen Entwickler-Shops unterstützt werden. In diesem Bereich gibt es aus verschiedenen Gründen viel mehr Pushback für iOS-Updates.
Bevor Sie sich also für iOS 13 und SwiftUI begeistern (was Sie unbedingt tun sollten, weil es fantastisch ist), wird dies in der realen Welt außerhalb des Silicon Valley nicht genau mit den Erwartungen des Durchschnittsverbrauchers übereinstimmen und Sie müssen Unterstützung leisten ältere Geräte und müssen, weil es einfach zu viele Menschen gibt, die Sie entfremden würden.
Basierend auf der Apple-Dokumentation ist es leider erst ab iOS 13 verfügbar.
Es ist kompatibel mit iOS 13+. Hier ist ein Link zu seiner Dokumentation.
https://developer.apple.com/documentation/swiftui/
Auch Xcode 10 unterstützt es nicht. Sie müssen Xcode 11 verwenden, der sich ab dem 3. Juni 2019 in der Beta befindet. https://developer.apple.com/tutorials/swiftui/creating-and-combining-views
funktioniert nur für ios 13 oder höher
Sie können Ihren SwiftUI
Code weiterhin mit anhängen
@available(iOS 13.0, *)
Wenn Sie weiterhin Xcode unter Xcode 11 verwenden und über SwiftUI-Code verfügen, können Sie diesen umbrechen
#if canImport(SwiftUI)
...
#endif
Dies kann das Problem beim Kompilieren mit Xcode unter Xcode 11 beheben
Wie jeder gesagt hat, wird es nicht abwärtskompatibel mit älteren iOS-Versionen sein. Angesichts der Tatsache, dass Apple durchweg eine hohe Installationsbasis für sein neuestes iOS hat und iOS 13 iPhone 6S oder höher, iPad Air 2 oder höher, das neue iPad mini 4 und iPhone SE erfordert. Die überwiegende Mehrheit der Benutzer kann iOS 13 installieren und schöne SwiftUI-Apps genießen.
Wie alle Leute vor mir erwähnt haben, ist es sehr klar, dass iOS 13 oder höher erforderlich sein wird. Als neuer iOS-Entwickler war ich jedoch besorgt darüber, inwieweit ich SwiftUI im Vergleich zu UIKit übernehmen sollte. Ich habe bereits einige kleine Projekte mit UIKit erstellt und bin damit irgendwo weitergekommen.
Aber als SwiftUI begann, wie man sie kombiniert. Der Artikel im folgenden Link stellt alles in einen Kontext: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
Meine einzige Sorge ist jetzt, dass ich bei Xcode 11 festgestellt habe, dass ein Xcode-Projekt nicht sowohl Storyboards als auch SwiftUI kombinieren kann.
Leider nein, SwiftUI ist nur in iOS 13 und höher zulässig. Es wurde im iOS 13-Framework eingeführt. Vor iOS 13 wurde alles mit dem Obj-C-Framework (einschließlich Swift) erstellt.
Auf der rechten Seite der Entwicklerdokumentation werden die unterstützten Versionen von iOS, macOS, tvOS, watchOS usw. angezeigt.
https://developer.apple.com/documentation/swiftui/
Hoffe das hilft!