Presentar una colección de backports Swiftui para facilitar su desarrollo de iOS.
Muchos backports admiten iOS 13+, pero donde se introdujeron las características de Uikit en versiones posteriores, lo mismo será aplicable a estos backports, para mantener la paridad con UIKIT.
En algunos casos, también he incluido API adicionales que traen más características a su desarrollo Swiftui.
Tenga en cuenta que todos los backports se combinarán con las API oficiales de Apple, cualquier característica adicional se proporcionará por separado.
Todos los backports están completamente documentados, en la mayoría de los casos utilizando la propia documentación de Apple para consistencia. Consulte los documentos de encabezado o la documentación original de Apple para obtener más detalles.
También hay un proyecto de demostración disponible donde puede ver demostraciones completas de todos los backports y características adicionales, incluido el código de referencia para ayudarlo a comenzar.
Por último, espero que este repositorio también sirva como un gran recurso para cómo puede retroceder efectivamente con hacks mínimos.
La documentación completa se puede encontrar aquí.
Construir bibliotecas útiles como estas, le quita tiempo a mi familia. Construyo estas herramientas en mi tiempo libre porque siento que es importante retribuir a la comunidad. Considere patrocinarme, ya que me ayuda a mantenerme trabajando en bibliotecas útiles como estas.
También puedes darme un seguimiento y un 'gracias' en cualquier momento.
La biblioteca adopta un diseño de backport de Dave Delong que utiliza un solo tipo para mejorar la capacidad de descubrimiento y la capacidad de mantenimiento cuando llega el momento de eliminar las implementaciones de su backport, a favor de las API oficiales.
Backports de tipos puros, se pueden descubrir fácilmente en el espacio de nombres de Backport . Del mismo modo, los modificadores se pueden descubrir bajo el espacio de nombres .backport .
Desafortunadamente, los backports
Environmentno pueden acceder de esta manera, en esos casos los valores de la API de Apple se prefijan conbackportpara simplificar el descubrimiento.
Tipos:
@ Backport . AppStorage ( " filter-enabled " )
private var filterEnabled : Bool = falseModificador:
Button ( " Show Prompt " ) {
showPrompt = true
}
. sheet ( isPresented : $showPrompt ) {
Prompt ( )
. backport . presentationDetents ( [ . medium , . large ] )
}Ambiente:
@ Environment ( . backportRefresh ) private var refreshAction Swiftui
AsyncImageAppStoragebackground - API ViewBuilderDismissActionDynamicTypeSize - Label - LabeledContentNavigationDestination : utiliza una vista de navegación estándarnavigationTitle - API más nuevaoverlay - ViewBuilder APIonChangeopenURLProgressViewpresentationDetentspresentationDragIndicatorquicklookPreviewrequestReviewRefreshable : incluye pull-to -freshScaledMetricShareLinkStateObjectscrollDisabledscrollDismissesKeyboardscrollIndicatorsSection(_ header:)task - Async/WAIT ModificadorUikit
UIHostingConfiguration : simplifica la incrustación de Swiftui en UICollectionViewCell y UITableViewCell Presentaciones modales
Agregando esto a su vista presentada, puede usar el cierre provisto para presentar una ActionSheet a un usuario cuando intentan descartar de manera interactiva. También puede usar esto para deshabilitar los despidos interactivos por completo.
presentation ( isModal : true ) { /* attempt */ }FittittingGeometryReader
Una implementación GeometryReader personalizada que se aplica correctamente a su contenido. Esto es útil en muchos casos en los que necesita un GeometryReader , pero no quiere que tome implícitamente los límites de su visión principal.
FittingsCrollView
Una ScrollView personalizado que respeta Spacer cuando el contenido no es desplazable. Esto es útil cuando necesita colocar una vista en los bordes de su Vista de desplazamiento, mientras que su contenido es lo suficientemente pequeño como para no requerir desplazamiento. Otro gran caso de uso es el contenido centrado verticalmente que se alinea top una vez que el contenido requiere desplazamiento.
Puede instalar manualmente (copiando los archivos en el directorio Sources ) o utilizando Swift Package Manager ( preferido )
Para instalar con Swift Package Manager, agregue esto a la sección dependencies de su archivo Package.swift :
.package(url: "https://github.com/shaps80/SwiftUIBackports.git", .upToNextMajor(from: "2.0.0"))