Si tengo una aplicación creada con SwiftUI, ¿funcionará para iOS por debajo de iOS 13?
Si tengo una aplicación creada con SwiftUI, ¿funcionará para iOS por debajo de iOS 13?
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 :
/// 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 }
}
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:
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.
Swift 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 acerca SwiftUI
y Combine
menos 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 .
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.
Según la documentación de Apple, está disponible solo a partir de iOS 13, desafortunadamente.
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
solo funciona para ios 13 o posterior
aún puede adjuntar su SwiftUI
código usando
@available(iOS 13.0, *)
si todavía usa Xcode debajo de Xcode 11 y tiene el código SwiftUI, puede envolverlo con
#if canImport(SwiftUI)
...
#endif
Esto puede solucionar el problema al compilar con Xcode debajo de Xcode 11
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.
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.
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!