Amigos, ¿alguien sabe por qué mi respuesta fue eliminada por @ Jean-François Fabre
CrazyPro007
10
NO, SwiftUI no funcionará con iOS 12.xy versiones anteriores.
ystack
Respuestas:
89
Acabo de comprobarlo en Xcode 11 y puedo confirmar que no será compatible con versiones anteriores, como se puede ver en la Viewimplementación 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(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 y Combine usan Opaque-Return-Types en Swift 5.1 y dado que Opaque-Return-Types (junto con otras características) se implementan en Swift 5.1 y debido a la naturaleza de su implementación, no se pueden volver a implementar en Swift 5.0 (a diferencia de DSL o Property-Wrappers ), y debido a que iOS 13 es el primer SDK de iOS que contiene el tiempo de ejecución de Swift 5.1 en el sistema operativo, la respuesta a la pregunta es no y SwiftUI y Combine no se pueden usar en versiones anteriores de iOS.
A menos que Apple proporcione una forma de agrupar el tiempo de ejecución de Swift 5.1 (o versiones futuras) con la aplicación como solía hacerlo con las versiones anteriores de Swift, pero dado que aumentará el tamaño de la aplicación y agregará una sobrecarga a todo el sistema nuevamente, dudo que esto suceda. alguna vez suceda.
Que podría ser compatible con versiones anteriores
Swift 5.1 aún no se ha lanzado y SwiftUIutiliza características como tipos de retorno opacos , DSL , propertyDelegate (introducido en WWDC como propertyWrapper ), etc., que estarán disponibles solo en Swift 5.1. Dado que Swift 5 es binario estable, supongo que no fue posible usar swift-frameworks integrados dentro de Xcode11, por lo tanto, han vuelto a implementar estas características en el núcleo de Cocoa y las han marcado como iOS13 + disponible hasta que se lance Swift 5.1.
Mis suposiciones se basan en el hecho de que Ordered Collection Diffing y DSL estarán disponibles en Swift 5.1 y no tendrán correlaciones con Xcode o el ecosistema de Apple, pero también están marcados como @available(iOS13,...). Esto significa que tuvieron que marcar todo usando las funciones de Swift 5.1 con el atributo de disponibilidad de iOS. Algunos de ellos se eliminan una vez Swift 5.1 se libera, pero no podemos estar seguros acerca SwiftUIy Combinemenos que Apple diga lo contrario. Esto también se menciona en la propuesta de DSL :
Implementación: PR . Tenga en cuenta que la implementación en la vista previa del desarrollador de Xcode usa una transformación algo más simple que la descrita aquí. El RP vinculado refleja la implementación en la vista previa, pero está en desarrollo activo para coincidir con esta propuesta.
Por lo tanto, la limitación de incompatibilidad con versiones anteriores podría eliminarse cuando se lance Swift 5.1, pero el equipo de Apple realmente debe aclararla .
¿Algún avance en esto? PR que mencionaste se fusionó, Swift 5.1 se lanzó
user158
@ user158 Acabo de actualizar la respuesta y describí por qué no se admite esta función.
farzadshbfn
15
No. SwiftUI requiere un destino de implementación de iOS 13 o posterior, macOS 10.15 o posterior, tvOS 13 o posterior, o watchOS 6 o posterior. El marco contiene muchos tipos nuevos que no existen en versiones anteriores de los sistemas operativos.
Si está disparando para admitir iPhone y no iPad, probablemente podría esperar que la mayoría de los usuarios se actualicen a iOS 13 dentro de los 12-18 meses (comenzando con la fecha de lanzamiento). ¿Quizás 85-90%? (Creo que Apple dijo que en este punto todavía hay un 15% de personas que no usan iOS 12). Sin embargo, todavía es bastante tiempo en el que no podrá implementar las aplicaciones SwiftUI de inmediato o de lo contrario se arriesgará a alienar a muchos usuarios.
También dependiendo de lo que sea el 10-15% restante, eso podría significar muchos usuarios (y $$) para ti en la mesa.
Si también es compatible con iPad, entonces es más complicado porque las personas no actualizan sus iPads con tanta frecuencia. Hay una gran cantidad de iPad 2 junto con iPads de tercera y cuarta generación todavía en libertad, que solo tienen 10.3.3 y ya no pueden actualizarse. La gente simplemente no va a ir a pagar entre $ 400 y $ 1,000 por un nuevo iPad cuando el suyo funciona perfectamente bien.
Siempre hay espacio y la necesidad de actualizar la aplicación, mejorarla, corregir errores, que no necesariamente tienen nada que ver con iOS 13. es decir, encontrar un error que no conocías antes y que hace que muchos usuarios se sientan infelices. .no en la última versión de iOS. y ni siquiera hemos hablado de clientes empresariales / corporativos que apoyan muchas tiendas de desarrollo. Hay mucho más rechazo a las actualizaciones de iOS por varias razones en esa área.
Entonces, antes de que se entusiasme con iOS 13 y SwiftUI (lo cual debería porque es increíble), en el mundo real, fuera de Silicon Valley, eso no se alineará exactamente con lo que el consumidor promedio espera y necesitará apoyo. dispositivos más antiguos y es necesario porque hay demasiadas personas a las que estarías alienando.
Conozco a varias personas con iPhones "no compatibles", por lo que nunca alcanzará el 100% con la última versión de iOS. Sé que pensaré mucho en mi próximo teléfono cuando el actual muera
Gavin
@cspam Si bien sus suposiciones pueden ser correctas, no responden a la pregunta.
user1892364
iOS 12 no dejó de admitir más del 10% de los dispositivos, por lo que es difícil decir si podemos esperar las mismas tasas de adopción para iOS 13.
Casper Zandbergen
SwiftUI necesitará ser compatible con dispositivos más antiguos y lo necesitará porque ¡hay demasiadas personas a las que estaría alienando! thumb
Trevor
9
Según la documentación de Apple, está disponible solo a partir de iOS 13, desafortunadamente.
Todo lo que dice la documentación vinculada es que necesita usar iOS 13 SDK (es decir, Xcode 11). Eso no significa que la versión mínima de iOS compatible del dispositivo tenga que ser iOS 13 ... puede admitir versiones anteriores de iOS perfectamente ...
escamoso
9
Es compatible con iOS 13+. Aquí hay un enlace a su documentación.
Como todos han dicho, no será compatible con versiones anteriores de iOS. Pero dado que Apple siempre tiene una alta base de instalación de su último iOS, y también dado que iOS 13 requiere iPhone 6S o posterior, iPad Air 2 o posterior, el nuevo iPad mini 4 y iPhone SE. La gran mayoría de los usuarios podrá instalar iOS 13 y disfrutar de las encantadoras aplicaciones SwiftUI.
Mi iPad no hace el corte para iOS 13, y dado que todavía es fuerte y no será reemplazado por un tiempo (espero) aquí con la esperanza de que las aplicaciones que disfruto / necesito no arrojen dispositivos más antiguos a la deriva.
Gavin
3
Como mencionaron todas las personas antes que yo, está muy claro que requerirá iOS 13 o posterior. Pero como nuevo desarrollador de iOS, me preocupaba hasta qué punto debería adoptar SwiftUI en comparación con UIKit. Ya construí algunos proyectos pequeños con UIKit y fui a algún lugar avanzado con él.
Lamentablemente no, SwiftUI solo está permitido en iOS 13 y superior. Se introdujo en el marco de iOS 13. Antes de iOS 13, todo se compilaba con el marco Obj-C (incluido Swift).
En el lado derecho de la documentación del desarrollador, muestra las versiones compatibles de iOS, macOS, tvOS, watchOS, etc.
Respuestas:
Acabo de comprobarlo en Xcode 11 y puedo confirmar que no será compatible con versiones anteriores, como se puede ver en la
View
implementación de SwiftUI :fuente
No lo creo, porque todas las bibliotecas ya están anotadas para iOS 13 o superior.
Además, en la documentación , Apple menciona claramente las versiones compatibles:
fuente
SwiftUI y Combine usan Opaque-Return-Types en Swift 5.1 y dado que Opaque-Return-Types (junto con otras características) se implementan en Swift 5.1 y debido a la naturaleza de su implementación, no se pueden volver a implementar en Swift 5.0 (a diferencia de DSL o Property-Wrappers ), y debido a que iOS 13 es el primer SDK de iOS que contiene el tiempo de ejecución de Swift 5.1 en el sistema operativo, la respuesta a la pregunta es no y SwiftUI y Combine no se pueden usar en versiones anteriores de iOS.
A menos que Apple proporcione una forma de agrupar el tiempo de ejecución de Swift 5.1 (o versiones futuras) con la aplicación como solía hacerlo con las versiones anteriores de Swift, pero dado que aumentará el tamaño de la aplicación y agregará una sobrecarga a todo el sistema nuevamente, dudo que esto suceda. alguna vez suceda.
Que podría ser compatible con versiones anterioresSwift 5.1 aún no se ha lanzado y
SwiftUI
utiliza características como tipos de retorno opacos , DSL , propertyDelegate (introducido en WWDC como propertyWrapper ), etc., que estarán disponibles solo en Swift 5.1. Dado que Swift 5 es binario estable, supongo que no fue posible usar swift-frameworks integrados dentro de Xcode11, por lo tanto, han vuelto a implementar estas características en el núcleo de Cocoa y las han marcado como iOS13 + disponible hasta que se lance Swift 5.1.Mis suposiciones se basan en el hecho de que Ordered Collection Diffing y DSL estarán disponibles en Swift 5.1 y no tendrán correlaciones con Xcode o el ecosistema de Apple, pero también están marcados como
@available(iOS13,...)
. Esto significa que tuvieron que marcar todo usando las funciones de Swift 5.1 con el atributo de disponibilidad de iOS. Algunos de ellos se eliminan una vez Swift 5.1 se libera, pero no podemos estar seguros acercaSwiftUI
yCombine
menos que Apple diga lo contrario. Esto también se menciona en la propuesta de DSL :Por lo tanto, la limitación de incompatibilidad con versiones anteriores podría eliminarse cuando se lance Swift 5.1, pero el equipo de Apple realmente debe aclararla .fuente
No. SwiftUI requiere un destino de implementación de iOS 13 o posterior, macOS 10.15 o posterior, tvOS 13 o posterior, o watchOS 6 o posterior. El marco contiene muchos tipos nuevos que no existen en versiones anteriores de los sistemas operativos.
fuente
Si está disparando para admitir iPhone y no iPad, probablemente podría esperar que la mayoría de los usuarios se actualicen a iOS 13 dentro de los 12-18 meses (comenzando con la fecha de lanzamiento). ¿Quizás 85-90%? (Creo que Apple dijo que en este punto todavía hay un 15% de personas que no usan iOS 12). Sin embargo, todavía es bastante tiempo en el que no podrá implementar las aplicaciones SwiftUI de inmediato o de lo contrario se arriesgará a alienar a muchos usuarios.
También dependiendo de lo que sea el 10-15% restante, eso podría significar muchos usuarios (y $$) para ti en la mesa.
Si también es compatible con iPad, entonces es más complicado porque las personas no actualizan sus iPads con tanta frecuencia. Hay una gran cantidad de iPad 2 junto con iPads de tercera y cuarta generación todavía en libertad, que solo tienen 10.3.3 y ya no pueden actualizarse. La gente simplemente no va a ir a pagar entre $ 400 y $ 1,000 por un nuevo iPad cuando el suyo funciona perfectamente bien.
Siempre hay espacio y la necesidad de actualizar la aplicación, mejorarla, corregir errores, que no necesariamente tienen nada que ver con iOS 13. es decir, encontrar un error que no conocías antes y que hace que muchos usuarios se sientan infelices. .no en la última versión de iOS. y ni siquiera hemos hablado de clientes empresariales / corporativos que apoyan muchas tiendas de desarrollo. Hay mucho más rechazo a las actualizaciones de iOS por varias razones en esa área.
Entonces, antes de que se entusiasme con iOS 13 y SwiftUI (lo cual debería porque es increíble), en el mundo real, fuera de Silicon Valley, eso no se alineará exactamente con lo que el consumidor promedio espera y necesitará apoyo. dispositivos más antiguos y es necesario porque hay demasiadas personas a las que estarías alienando.
fuente
Según la documentación de Apple, está disponible solo a partir de iOS 13, desafortunadamente.
https://developer.apple.com/documentation/swiftui/
fuente
Es compatible con iOS 13+. Aquí hay un enlace a su documentación.
https://developer.apple.com/documentation/swiftui/
Incluso Xcode 10 no lo admite. Debe usar Xcode 11, que está en versión beta a partir del (3 de junio de 2019). https://developer.apple.com/tutorials/swiftui/creating-and-combining-views
fuente
solo funciona para ios 13 o posterior
aún puede adjuntar su
SwiftUI
código usandosi todavía usa Xcode debajo de Xcode 11 y tiene el código SwiftUI, puede envolverlo con
Esto puede solucionar el problema al compilar con Xcode debajo de Xcode 11
fuente
Como todos han dicho, no será compatible con versiones anteriores de iOS. Pero dado que Apple siempre tiene una alta base de instalación de su último iOS, y también dado que iOS 13 requiere iPhone 6S o posterior, iPad Air 2 o posterior, el nuevo iPad mini 4 y iPhone SE. La gran mayoría de los usuarios podrá instalar iOS 13 y disfrutar de las encantadoras aplicaciones SwiftUI.
fuente
Como mencionaron todas las personas antes que yo, está muy claro que requerirá iOS 13 o posterior. Pero como nuevo desarrollador de iOS, me preocupaba hasta qué punto debería adoptar SwiftUI en comparación con UIKit. Ya construí algunos proyectos pequeños con UIKit y fui a algún lugar avanzado con él.
Pero cuando SwiftUI comenzó, cómo combinar entre ellos. El artículo en el siguiente enlace pone todo en contexto: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
Mi única preocupación ahora es que noté con Xcode 11 que un proyecto de Xcode no puede combinar tanto Storyboards como SwiftUI.
fuente
Lamentablemente no, SwiftUI solo está permitido en iOS 13 y superior. Se introdujo en el marco de iOS 13. Antes de iOS 13, todo se compilaba con el marco Obj-C (incluido Swift).
En el lado derecho de la documentación del desarrollador, muestra las versiones compatibles de iOS, macOS, tvOS, watchOS, etc.
https://developer.apple.com/documentation/swiftui/
¡Espero que esto ayude!
fuente