Perpustakaan ini memberikan pengunduh gambar async dengan dukungan cache. Untuk kenyamanan, kami menambahkan kategori untuk elemen UI seperti UIImageView , UIButton , MKAnnotationView .
Catatan:
SDadalah awalan untuk desain sederhana (yang merupakan nama tim di perusahaan gerak harian dari penulis Olivier Poitrey)
UIImageView , UIButton , MKAnnotationView Menambahkan gambar web dan manajemen cache Dari 5.19+, SDWebImage mendukung VisionOS pada semua manajer paket (termasuk Cocoapods/Carthage/SPM). Tingkatkan alat terkait jika Anda menghadapi masalah.
Untuk 5.18+, SDWebImage dapat dikompilasi untuk platform VisionOS. Namun, masih dalam beta dan mungkin berisi masalah tidak seperti dukungan iOS UIKIT yang stabil. Selamat datang untuk mencoba dan melaporkan masalah.
Untuk membangun VisionOS, saat ini kami hanya mendukung integrasi Xcode standar.
Lihat Installation with Swift Package Manager dan Manual Installation Guide di bawah ini.
Catatan: Untuk pengguna baru
SDWebImage menggunakan sistem plugin coder untuk mendukung format gambar built-in dan eksternal Apple. Untuk gambar statis kami selalu menggunakan fallback Apple sebagai fallback, tetapi tidak untuk gambar animasi. Saat ini (diperbarui ke versi 5.19.x) kami hanya mendaftarkan format animasi tradisional seperti GIF/APNG secara default, tanpa format modern seperti AWEBP/HEICS/AVIF, bahkan pada firmware terbaru.
Jika Anda menginginkan dukungan format gambar animasi ini, cukup daftar sendiri dengan kode satu baris, lihat lebih lanjut di Webp Coder dan HEIC Coder
Di masa depan kita akan mengubah perilaku ini dengan selalu mendaftarkan semua format gambar animasi apel, untuk memudahkan pengguna baru untuk berintegrasi.
Untuk menjaga SDWebImage tetap fokus dan terbatas pada fitur inti, tetapi juga memungkinkan ekstensibilitas dan perilaku khusus, selama refactoring 5.0 kami fokus pada modularisasi perpustakaan. Dengan demikian, kami telah memindahkan/membangun modul baru ke SDWebImage org.
SwiftUi adalah kerangka kerja UI inovatif yang ditulis dalam Swift untuk membangun antarmuka pengguna di semua platform Apple.
Kami mendukung SwiftUi dengan membangun kerangka kerja baru yang disebut SDWebImagesWiftUi, yang dibangun di atas fungsi inti SDWebImage (caching, pemuatan, dan animasi).
Kerangka kerja baru memperkenalkan dua tampilan struct WebImage dan AnimatedImage untuk SwiftUi World, ImageIndicator Modifier untuk setiap tampilan, objek yang dapat diamati oleh ImageManager untuk sumber data. Mendukung iOS 13+/MacOS 10.15+/TVOS 13+/WatchOS 6+ dan Swift 5.1. Selamat mencoba dan berikan umpan balik!
Photos.framework )LPLinkView (menggunakan LinkPresentation.framework ) Anda dapat menggunakannya secara langsung, atau membuat komponen serupa dari Anda sendiri, dengan menggunakan arsitektur SDWebImage yang dapat disesuaikan.
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 " ) )Dalam 5.0, kami memperkenalkan mekanisme baru untuk mendukung gambar animasi. Ini termasuk pemuatan gambar animasi, rendering, decoding, dan juga mendukung kustomisasi (untuk pengguna tingkat lanjut).
Solusi gambar animasi ini tersedia untuk iOS / tvOS / macOS . SDAnimatedImage adalah subkelas dari UIImage/NSImage , dan SDAnimatedImageView adalah subclass dari UIImageView/NSImageView , untuk membuatnya kompatibel dengan API Kerangka Kerja Umum.
SDAnimatedImageView mendukung metode kategori pemuatan gambar yang sudah dikenal, berfungsi seperti penggantian drop-in untuk UIImageView/NSImageView .
Tidak memiliki UIView (seperti WatchKit atau CALayer )? Anda masih dapat menggunakan SDAnimatedPlayer mesin pemain untuk pemutaran dan rendering lanjutan.
Lihat gambar animasi untuk informasi lebih rinci.
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 Untuk membersihkan barang -barang dan membuat proyek inti kami melakukan lebih sedikit hal, kami memutuskan bahwa integrasi FLAnimatedImage tidak termasuk di sini. Dari 5.0, ini masih akan tersedia, tetapi di bawah repo khusus SdwebimageFlplugin.
Ada 5 cara untuk menggunakan SDWebImage dalam proyek Anda:
Cocoapods adalah manajer ketergantungan untuk Objective-C, yang mengotomatiskan dan menyederhanakan proses penggunaan pustaka pihak ke-3 dalam proyek Anda. Lihat bagian Get Get Start untuk lebih jelasnya.
platform :ios, '8.0'
pod 'SDWebImage', '~> 5.0'
Proyek Swift sebelumnya harus menggunakan use_frameworks! Untuk membuat semua polong menjadi kerangka kerja dinamis untuk membiarkan cocoapod bekerja.
Namun, dimulai dengan CocoaPods 1.5.0+ (dengan Xcode 9+ ), yang mendukung untuk membangun kedua kode Objective-C && Swift ke dalam kerangka statis. Anda dapat menggunakan header modular untuk menggunakan SDWebImage sebagai kerangka kerja statis, tanpa perlu 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
Lihat lebih lanjut tentang Cocoapods 1.5.0 - Perpustakaan Statis Swift
Jika tidak, Anda masih perlu menambahkan use_frameworks! untuk menggunakan sdwebimage sebagai kerangka kerja dinamis:
platform :ios, '8.0'
use_frameworks!
pod 'SDWebImage'
Ada 2 subspec yang tersedia sekarang: Core dan MapKit (ini berarti Anda hanya dapat menginstal beberapa modul SDWebImage. Secara default, Anda hanya mendapatkan Core , jadi jika Anda memerlukan MapKit , Anda perlu menentukannya).
Contoh podfile:
pod 'SDWebImage/MapKit'
Carthage adalah manajer ketergantungan yang ringan untuk Swift dan Objective-C. Ini memanfaatkan modul Cocoatouch dan kurang invasif daripada cocoapods.
Untuk menginstal dengan Carthage, ikuti instruksi di Carthage
Pengguna Carthage dapat menunjuk ke repositori ini dan menggunakan kerangka kerja mana pun yang mereka inginkan: SDWebImage, SDWebIMAGEMAPKIT atau keduanya.
Buat entri berikut di cartFile Anda: github "SDWebImage/SDWebImage" Kemudian jalankan carthage update jika ini adalah pertama kalinya Anda menggunakan carthage dalam proyek, Anda harus melalui beberapa langkah tambahan seperti yang dijelaskan di Carthage.
Catatan: Saat ini, Carthage tidak menyediakan cara untuk membangun hanya subkomponen repositori spesifik (atau setara dengan subspec Cocoapods). Semua komponen dan ketergantungannya akan dibangun dengan perintah di atas. Namun, Anda tidak perlu menyalin kerangka kerja yang tidak Anda gunakan ke dalam proyek Anda. Misalnya, jika Anda tidak menggunakan
SDWebImageMapKit, jangan ragu untuk menghapus kerangka kerja dari direktori pembuatan carthage setelahcarthage updateselesai.
Catatan: Apple membutuhkan SDWebImage berisi tanda tangan. Jadi, secara default kerangka biner
carthage buildtidak melakukan codesign, ini akan menyebabkan kesalahan validasi. Anda dapat menandatangani diri dengan identitas program pengembang apel, atau menggunakan kerangka biner:
binary "https://github.com/SDWebImage/SDWebImage/raw/master/SDWebImage.json"
Swift Package Manager (SWIFTPM) adalah alat untuk mengelola distribusi kode Swift serta ketergantungan C-keluarga. Dari Xcode 11, Swiftpm terintegrasi secara native dengan XCODE.
SDWebImage Support SWIFTPM dari versi 5.1.0. Untuk menggunakan SWIFTPM, Anda harus menggunakan XCODE 11 untuk membuka proyek Anda. Klik File -> Swift Packages -> Add Package Dependency , masukkan URL repo SDWebImage. Atau Anda dapat login xcode dengan akun github Anda dan cukup ketik SDWebImage untuk mencari.
Setelah memilih paket, Anda dapat memilih jenis ketergantungan (versi tag, cabang atau komit). Maka XCODE akan mengatur semua barang untuk Anda.
Jika Anda seorang penulis kerangka kerja dan menggunakan SDWebImage sebagai ketergantungan, perbarui file Package.swift Anda:
let package = Package (
// 5.1.0 ..< 6.0.0
dependencies : [
. package ( url : " https://github.com/SDWebImage/SDWebImage.git " , from : " 5.1.0 " )
] ,
// ...
)Dari 5.19.2, SDWebImage menyediakan xcframework biner resmi kanonik pada halaman rilis GitHub.
Anda dapat memilih untuk mengunduh SDWebImage-dynamic.xcframework.zip untuk Dynamic Linked One, atau SDWebImage-static.xcframework.zip untuk satu terkait statis.
Seret .xcframework unzip ke tab Kerangka Proyek XCODE Anda.
Dari Xcode 15 Apple akan memverifikasi tanda tangan XCFRAMEWork biner, untuk menghindari serangan rantai pasokan.
Sidik jari saat ini harus 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
Sertifikat disimpan dalam repo di sini
Kunci publik disimpan dalam repo di sini
Lihat LEBIH: Memverifikasi asal mula xcframeworks Anda
sudo xcode-select -s /path/to/Xcode.app
atau
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
Lihat lebih lanjut tentang Wiki: Panduan Instal Manual
Di file sumber tempat Anda perlu menggunakan perpustakaan, impor file header payung:
# import < SDWebImage/SDWebImage.h > Ini juga disarankan untuk menggunakan sintaks impor modul, tersedia untuk cocoapods (aktifkan modular_headers )/carthage/swiftpm.
@import SDWebImage;
Pada titik ini ruang kerja Anda harus dibangun tanpa kesalahan. Jika Anda mengalami masalah, posting masalah ini dan komunitas dapat membantu Anda menyelesaikannya.
Dari Xcode 15, kami menyediakan file PrivacyInfo.xcprivacy baru untuk detail privasi, lihat menjelaskan penggunaan data dalam manifes privasi
Anda dapat mengekspor Laporan Privasi setelah mengarsipkan aplikasi Anda dengan mengintegrasikan SDWebImage melalui SwiftPM/XCFRAMEWork atau Cocoapods ( use_frameworks diatur ke True).
Untuk versi lama atau jika Anda menggunakan arsip AR statis, seperti yang dipersyaratkan oleh detail privasi aplikasi di App Store, inilah daftar praktik pengumpulan data SDWebImage.
Terima kasih untuk semua orang yang telah berkontribusi pada SDWebImage.
Semua kode sumber dilisensikan di bawah lisensi MIT.
Untuk mempelajari tentang desain arsitektur SDWebImage untuk kontribusi, baca inti arsitektur SDWebImage v5.6. Terima kasih @looseyi untuk posting dan terjemahannya.