Warum versuchst du es nicht? Xcode 11 Beta steht zum Download zur Verfügung. Die Tutorials finden Sie hier unter developer.apple.com/tutorials/swiftui .
Martin R
1
Leute, weiß jemand, warum meine Antwort von @ Jean-François Fabre
CrazyPro007
10
NEIN, SwiftUI funktioniert nicht mit iOS 12.x und älter.
Ystack
Hallo @Ted, nur eine freundliche Erinnerung, um eine der unten vorgeschlagenen Antworten als die richtige Antwort zu markieren. Ich habe Fredpi Antwort ziemlich gut gefunden ... aber es ist dein Anruf;)
Rodrigoelp
Antworten:
88
Ich habe es gerade in Xcode 11 ausgecheckt und kann bestätigen, dass es nicht abwärtskompatibel ist, wie aus der ViewImplementierung 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(iOS13.0,OSX10.15, tvOS 13.0,watchOS6.0,*)publicprotocolView:_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.associatedtypeBody:View/// Declares the content and behavior of this view.var body:Self.Body{get}}
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.
Es könnte abwärtskompatibel sein
Swift 5.1 ist noch nicht veröffentlicht und SwiftUIverwendet 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 SwiftUIund Combinees 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 .
Gibt es hierzu Neuigkeiten? PR, die Sie erwähnt haben, wird zusammengeführt, Swift 5.1 wird veröffentlicht
user158
@ user158 Ich habe gerade die Antwort aktualisiert und beschrieben, warum diese Funktion nicht unterstützt werden kann.
Farzadshbfn
15
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.
Es ist möglich, SwiftUI unter iOS 13 zu verwenden und gleichzeitig ein niedrigeres Bereitstellungsziel zu unterstützen. Bitte überprüfen Sie stackoverflow.com/a/58372597/840742
Renatus
13
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.
Ich kenne eine Reihe von Leuten auf "nicht unterstützten" iPhones, daher werden Sie für die neueste iOS-Version nie 100% erreichen. Ich weiß, dass ich lange und intensiv über mein nächstes Telefon nachdenken werde, wenn mein aktuelles stirbt
Gavin
@cspam Obwohl Ihre Annahmen vielleicht richtig sind, beantworten sie die Frage nicht.
user1892364
iOS 12 hat die Unterstützung für mehr als 10% der Geräte nicht eingestellt, daher ist es schwer zu sagen, ob wir für iOS 13 die gleichen Akzeptanzraten erwarten können.
Casper Zandbergen
SwiftUI muss ältere Geräte unterstützen und muss, weil es einfach zu viele Leute gibt, die Sie entfremden würden! thumb
Trevor
9
Basierend auf der Apple-Dokumentation ist es leider erst ab iOS 13 verfügbar.
In der verknüpften Dokumentation heißt es lediglich, dass Sie das iOS 13 SDK (dh Xcode 11) verwenden müssen. Das bedeutet nicht, dass die mindestens unterstützte iOS-Version des Geräts iOS 13 sein muss ... Sie können ältere iOS-Versionen problemlos unterstützen ...
schuppiger
9
Es ist kompatibel mit iOS 13+. Hier ist ein Link zu seiner Dokumentation.
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.
Mein iPad macht den Schnitt für iOS 13 nicht, und da es immer noch stark ist und hier für eine Weile nicht ersetzt wird (ich hoffe), in der Hoffnung, dass die Apps, die mir Spaß machen / brauchen, ältere Geräte nicht treiben.
Gavin
3
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.
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.
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 :quelle
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:
quelle
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.
Es könnte abwärtskompatibel seinSwift 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 , überSwiftUI
undCombine
es sei denn , Apple - sagt etwas anderes. Dies wird auch im Vorschlag von DSL erwähnt :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 .quelle
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.
quelle
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.
quelle
Basierend auf der Apple-Dokumentation ist es leider erst ab iOS 13 verfügbar.
https://developer.apple.com/documentation/swiftui/
quelle
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
quelle
funktioniert nur für ios 13 oder höher
Sie können Ihren
SwiftUI
Code weiterhin mit anhängenWenn Sie weiterhin Xcode unter Xcode 11 verwenden und über SwiftUI-Code verfügen, können Sie diesen umbrechen
Dies kann das Problem beim Kompilieren mit Xcode unter Xcode 11 beheben
quelle
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.
quelle
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.
quelle
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!
quelle