Cette bibliothèque fournit un téléchargeur d'image asynchrone avec support de cache. Pour plus de commodité, nous avons ajouté des catégories pour des éléments d'interface utilisateur comme UIImageView , UIButton , MKAnnotationView .
Remarque:
SDest le préfixe de la conception simple (qui est le nom de l'équipe dans Daily Motion Company de l'auteur Olivier Poitrey)
UIImageView , UIButton , MKAnnotationView ajoutant la gestion de l'image Web et du cache À partir de 5.19+, SDWebimage prend en charge VisionOS sur tous les gestionnaires de packages (incluez Cocoapods / Carthage / SPM). Améliorez les outils connexes si vous êtes confronté à des problèmes.
Pour 5.18+, SDWeBimage peut être compilé pour la plate-forme VisionOS. Cependant, il est toujours en version bêta et peut contenir des problèmes contrairement au support iOS UIKIT stable. Bienvenue pour essayer de signaler le problème.
Pour s'appuyer sur VisionOS, nous ne prenons actuellement en charge que l'intégration standard Xcode.
Voir Installation with Swift Package Manager et Manual Installation Guide ci-dessous.
Remarque: pour le nouvel utilisateur
SDWebimage utilise le système de plugin de codeur pour prendre en charge le format d'image intégré et externe d'Apple. Pour l'image statique, nous utilisons toujours l'Apple intégrée comme secours, mais pas pour l'image animée. Actuellement (mis à jour vers la version 5.19.x), nous enregistrons uniquement le format animé traditionnel comme GIF / APNG par défaut, sans le format moderne comme AweBP / Heics / AVIF, même sur le dernier firmware.
Si vous voulez ce format d'image animé, inscrivez-vous simplement par vous-même avec un code à une ligne, voir plus dans WebP Coder et Heic Coder
À l'avenir, nous changerons ce comportement en enregistrant toujours le format d'image animé intégré d'Apple, pour faciliter l'intégration du nouvel utilisateur.
Afin de garder SDWebimage axé et limité aux caractéristiques de base, mais aussi permettre des comportements d'extensibilité et personnalisés, pendant le refactorisation 5.0, nous nous sommes concentrés sur la modularisation de la bibliothèque. En tant que tel, nous avons déplacé / construit de nouveaux modules sur SDWebimage Org.
Swiftui est un cadre d'interface utilisateur innovant écrit dans Swift pour créer des interfaces utilisateur sur toutes les plates-formes Apple.
Nous prenons en charge Swiftui en construisant un tout nouveau cadre appelé SDWebimagesWiftUi, qui est construit sur les fonctions de base SDWeBimage (mise en cache, chargement et animation).
Le nouveau framework introduise deux vues WebImage et AnimatedImage pour Swiftui World, ImageIndicator Modificateur pour n'importe quelle vue, ImageManager Object observable pour la source de données. Prend en charge iOS 13 + / MacOS 10.15 + / TVOS 13 + / Watchos 6+ et Swift 5.1. Passez un bon essai de fournir des commentaires!
Photos.framework )LPLinkView (en utilisant LinkPresentation.framework ) Vous pouvez les utiliser directement ou créer des composants similaires de vos propres, en utilisant l'architecture personnalisable de SDWeBimage.
pod try SDWebImage# import < SDWebImage/SDWebImage.h >
...
[imageView sd_setImageWithURL: [ NSURL URLWithString: @" http://www.domain.com/path/to/image.jpg " ]
placeholderImage: [UIImage imageNamed: @" placeholder.png " ]];import SDWebImage
imageView . sd_setImage ( with : URL ( string : " http://www.domain.com/path/to/image.jpg " ) , placeholderImage : UIImage ( named : " placeholder.png " ) )En 5.0, nous avons introduit un tout nouveau mécanisme pour soutenir les images animées. Cela inclut le chargement d'image animé, le rendu, le décodage et prend également en charge les personnalisations (pour les utilisateurs avancés).
Cette solution d'image animée est disponible pour iOS / tvOS / macOS . Le SDAnimatedImage est la sous-classe de UIImage/NSImage , et SDAnimatedImageView est la sous-classe de UIImageView/NSImageView , pour les rendre compatibles avec les API de frameworks communs.
Le SDAnimatedImageView prend en charge les méthodes de catégorie de chargement d'image familières, fonctionne comme le remplacement de Drop-In pour UIImageView/NSImageView .
Vous n'avez pas UIView (comme WatchKit ou CALayer )? Vous pouvez toujours utiliser SDAnimatedPlayer le moteur Player pour la lecture et le rendu avancées.
Voir l'image animée pour des informations plus détaillées.
SDAnimatedImageView *imageView = [SDAnimatedImageView new ];
SDAnimatedImage *animatedImage = [SDAnimatedImage imageNamed: @" image.gif " ];
imageView.image = animatedImage; let imageView = SDAnimatedImageView ( )
let animatedImage = SDAnimatedImage ( named : " image.gif " )
imageView . image = animatedImage Afin de nettoyer les choses et de faire en sorte que notre projet de base fasse moins de choses, nous avons décidé que l'intégration FLAnimatedImage n'appartient pas ici. À partir de 5.0, cela sera toujours disponible, mais sous un repo dédié sdwebimageflplugin.
Il existe 5 façons d'utiliser SDWeBimage dans votre projet:
Cocoapods est un gestionnaire de dépendances pour Objective-C, qui automatise et simplifie le processus d'utilisation des bibliothèques tierces dans vos projets. Consultez la section Démarrage pour plus de détails.
platform :ios, '8.0'
pod 'SDWebImage', '~> 5.0'
Swift Project devait auparavant utiliser use_frameworks! Pour faire de toutes les gousses en framework dynamique pour permettre aux cocoapodes de fonctionner.
Cependant, en commençant par CocoaPods 1.5.0+ (avec Xcode 9+ ), qui prend en charge la création du code objectif-c && SWIFT dans le framework statique. Vous pouvez utiliser des en-têtes modulaires pour utiliser sdwebimage comme framework statique, sans avoir besoin d' use_frameworks! :
platform :ios, '8.0'
# Uncomment the next line when you want all Pods as static framework
# use_modular_headers!
pod 'SDWebImage', :modular_headers => true
Voir plus sur Cocoapods 1.5.0 - Bibliothèques statiques Swift
Sinon, vous devez toujours ajouter use_frameworks! Pour utiliser sdwebimage comme cadre dynamique:
platform :ios, '8.0'
use_frameworks!
pod 'SDWebImage'
Il existe 2 sous-espèces disponibles maintenant: Core et MapKit (cela signifie que vous ne pouvez installer que certains des modules SDWebimage. Par défaut, vous obtenez juste Core , donc si vous avez besoin MapKit , vous devez le spécifier).
Exemple de podfile:
pod 'SDWebImage/MapKit'
Carthage est un gestionnaire de dépendance léger pour Swift et Objective-C. Il exploite les modules de cocoatouch et est moins invasif que les cocoapodes.
Pour installer avec Carthage, suivez les instructions sur Carthage
Les utilisateurs de Carthage peuvent pointer vers ce référentiel et utiliser le framework généré qu'ils souhaitent: sdwebimage, sdwebimagemapkit ou les deux.
Faites l'entrée suivante dans votre carton: github "SDWebImage/SDWebImage" puis exécutez carthage update Si c'est la première fois que vous utilisez Carthage dans le projet, vous devrez passer par des étapes supplémentaires comme expliqué à Carthage.
Remarque: Pour le moment, Carthage ne fournit pas de moyen de créer uniquement des sous-composants de référentiel spécifiques (ou l'équivalent des sous-espèces de Cocoapods). Tous les composants et leurs dépendances seront construits avec la commande ci-dessus. Cependant, vous n'avez pas besoin de copier des cadres que vous n'utilisez pas dans votre projet. Par exemple, si vous n'utilisez pas
SDWebImageMapKit, n'hésitez pas à supprimer ce cadre du répertoire de construction de Carthage une foiscarthage updateterminée.
Remarque: Apple nécessite que sdwebimage contient des signatures. Ainsi, par défaut, le framework binaire
carthage buildne fait pas de codesign, cela entraînera une erreur de validation. Vous pouvez vous connecter avec l'identité du programme de développeur Apple ou utiliser le cadre binaire:
binary "https://github.com/SDWebImage/SDWebImage/raw/master/SDWebImage.json"
SWIFT Package Manager (SWIFTPM) est un outil pour gérer la distribution du code SWIFT ainsi que la dépendance de la famille C. À partir de Xcode 11, SWIFTPM a été intégré nativement avec Xcode.
SDWEBIMAGE Prise en charge SWIFTPM de la version 5.1.0. Pour utiliser SWIFTPM, vous devez utiliser Xcode 11 pour ouvrir votre projet. Cliquez sur File -> Swift Packages -> Add Package Dependency , entrez l'URL du repo SDWebimage. Ou vous pouvez vous connecter XCode avec votre compte GitHub et taper simplement SDWebImage pour rechercher.
Après avoir sélectionné le package, vous pouvez choisir le type de dépendance (version taguée, branche ou engagement). Ensuite, Xcode configurera toutes les choses pour vous.
Si vous êtes un auteur Framework et utilisez SDWebimage comme dépendance, mettez à jour votre fichier Package.swift :
let package = Package (
// 5.1.0 ..< 6.0.0
dependencies : [
. package ( url : " https://github.com/SDWebImage/SDWebImage.git " , from : " 5.1.0 " )
] ,
// ...
)À partir de 5.19.2, SDWEBIMAGE fournit les pages de libération de GitHub officielles canoniques sur les pages de libération GitHub.
Vous pouvez choisir de télécharger SDWebImage-dynamic.xcframework.zip pour un lien dynamique, ou SDWebImage-static.xcframework.zip pour un lié statique.
Faites glisser le .xcframework unzippé dans l'onglet Framework de votre projet Xcode.
De Xcode 15 Apple vérifiera la signature de Binary XCFramework, pour éviter les attaques de chaîne d'approvisionnement.
L'empreinte digitale doit actuellement être FC 3B 10 13 86 34 4C 50 DB 70 2A 9A D1 01 6F B5 1A 3E CC 8B 9D A9 B7 AE 47 A0 48 D4 D0 63 39 83
Le certificat est stocké dans le repo ici
La clé publique est stockée dans le repo ici
Voir plus: Vérifier l'origine de votre XCFrameworks
sudo xcode-select -s /path/to/Xcode.app
ou
export DEVELOPER_DIR=/path/to/Xcode.app/Contents/Developer
./Scripts/build-frameworks.sh
./Scripts/create-xcframework.sh
// https://developer.apple.com/support/third-party-SDK-requirements/
codesign --timestamp -v --sign "your own certificate" SDWebImage.xcframework
Voir plus sur Wiki: Guide d'installation manuelle
Dans les fichiers source où vous devez utiliser la bibliothèque, importez le fichier d'en-tête de parapluie:
# import < SDWebImage/SDWebImage.h > Il est également recommandé d'utiliser la syntaxe d'importation du module, disponible pour les cocoapodes (activer modular_headers ) / carthage / swiftpm.
@import SDWebImage;
À ce stade, votre espace de travail doit construire sans erreur. Si vous rencontrez des problèmes, publiez sur le problème et la communauté peut vous aider à le résoudre.
À partir de Xcode 15, nous fournissons le nouveau fichier de PrivacyInfo.xcprivacy pour les détails de la confidentialité, voir la description de l'utilisation des données dans les manifestes de confidentialité
Vous pouvez exporter le rapport de confidentialité après archiver votre application en intégrant sdwebimage via swiftpm / xcframework ou cocoapods ( use_frameworks définis sur true).
Pour l'ancienne version ou si vous utilisez Static AR Archive, comme l'exige les détails de confidentialité de l'App sur l'App Store, voici la liste des pratiques de collecte de données de SDWeBimage.
Merci à toutes les personnes qui ont déjà contribué à SDWebimage.
Tout le code source est sous licence MIT.
Pour en savoir plus sur la conception d'architecture de SDWebimage pour contribution, lisez le cœur de l'architecture SDWebimage v5.6. Merci @Looseyi pour le message et la traduction.