該庫提供了一個具有緩存支持的異步圖像下載器。為了方便起見,我們為UI元素添加了類別,例如UIImageView , UIButton , MKAnnotationView 。
注意:
SD是簡單設計的前綴(這是作者Olivier Poitrey的每日運動公司的團隊名稱)
UIImageView的類別, UIButton , MKAnnotationView添加Web Image和Cache Management 從5.19+開始,SDWebimage支持所有包裝管理人員的Visionos(包括Cocoapods/Carthage/SPM)。如果您面臨問題,請升級相關工具。
對於5.18+,可以為Visionos平台編輯SDWebimage。但是,它仍然處於beta中,並且可能包含與穩定的iOS Uikit支持不同的問題。歡迎嘗試報告問題。
為了建立Visionos,目前我們僅支持標準Xcode集成。
請參閱下面的Installation with Swift Package Manager和Manual Installation Guide安裝。
注意:新用戶
SDWebimage使用編碼器插件系統支持Apple的內置和外部圖像格式。對於靜態圖像,我們始終將Apple的內置用作後備,而不是用於動畫圖像。當前(更新為5.19.x版本)我們僅在默認情況下註冊傳統的動畫格式,例如GIF/APNG,即使在最新的固件上,也沒有像Awebp/Heics/Avif這樣的現代格式。
如果您想要這些動畫圖像格式支持,只需親自用單行代碼註冊,請參閱WebP編碼器和HEIC編碼器中的更多信息
將來,我們將始終註冊Apple所有內置的動畫圖像格式,以使新用戶可以更輕鬆地集成,從而改變此行為。
為了使SDWebimage專注於核心功能,但也允許可擴展性和自定義行為,在5.0重構期間,我們著重於模塊化庫。因此,我們已將新模塊移至SDWebimage Org。
SwiftUI是一種創新的UI框架,用Swift編寫,旨在在所有Apple平台上構建用戶界面。
我們通過構建一個名為sdwebimageswiftui的全新框架來支持Swiftui,該框架建立在SDWebimage Core功能(緩存,加載和動畫)的頂部。
新框架為Swiftui World引入了兩個視圖構造WebImage和AnimatedImage ,即任何視圖的ImageIndicator修飾符, ImageManager可觀察到數據源的對象。支持iOS 13+/macOS 10.15+/tvos 13+/watchos 6+和Swift 5.1。嘗試不錯,並提供反饋!
Photos.framework )LPLinkView (使用LinkPresentation.framework ) 您可以使用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 " ) )在5.0中,我們引入了一種全新的機制來支持動畫圖像。這包括動畫圖像加載,渲染,解碼以及支持自定義(適用於高級用戶)。
此動畫圖像解決方案可用於iOS / tvOS / macOS 。 SDAnimatedImage是UIImage/NSImage的子類, SDAnimatedImageView是UIImageView/NSImageView的子類,使其與常見的框架API兼容。
SDAnimatedImageView支持熟悉的圖像加載類別方法,例如UIImageView/NSImageView的下水替換。
沒有UIView (例如WatchKit或CALayer )?您仍然可以使用SDAnimatedPlayer播放器引擎進行高級播放和渲染。
有關更多詳細信息,請參見動畫圖像。
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為了清理事情並使我們的核心項目做更少的事情,我們決定在這裡不屬於FLAnimatedImage Impetation。從5.0起,它仍然可以使用,但在專用的sdwebimageflplugin下。
您的項目中有5種使用SDWebimage的方法:
Cocoapods是Objective-C的依賴項管理器,它可以自動化並簡化項目中使用第三方庫的過程。有關更多詳細信息,請參見“入門”部分。
platform :ios, '8.0'
pod 'SDWebImage', '~> 5.0'
Swift項目以前必須使用use_frameworks!將所有豆莢變成動態框架以使Cocoapods起作用。
但是,從CocoaPods 1.5.0+ (帶有Xcode 9+ )開始,該框架支持將兩個Objective-C && Swift代碼構建到靜態框架中。您可以使用模塊化標頭將SDWebimage用作靜態框架,而無需使用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
查看有關Cocoapods 1.5.0的更多信息 - Swift靜態庫
如果沒有,您仍然需要添加use_frameworks!將SDWebimage用作動態框架:
platform :ios, '8.0'
use_frameworks!
pod 'SDWebImage'
現在有2個亞種可用: Core和MapKit (這意味著您只能安裝一些SDWebimage模塊。默認情況下,您只需獲得Core ,因此,如果您需要MapKit ,則需要指定它)。
Podfile示例:
pod 'SDWebImage/MapKit'
迦太基是Swift and Objective-C的輕量級依賴經理。它利用了Cocoatouch模塊,並且不如Cocoapods侵入性。
要與迦太基安裝,請按照迦太基的說明
迦太基用戶可以指向此存儲庫,並使用所需的生成框架:sdwebimage,sdwebimagemapkit或兩者兼有。
在您的Cartfile中進行以下條目: github "SDWebImage/SDWebImage" ,然後運行carthage update如果這是您第一次在項目中使用迦太基,則需要在迦太基上進行的一些其他步驟。
注意:目前,迦太基不提供僅構建特定存儲庫子組件(或相當於Cocoapods的亞種)的方法。所有組件及其依賴項將使用上述命令構建。但是,您無需複制您不使用的框架。例如,如果您不使用
SDWebImageMapKit,請在carthage update完成後,隨時從迦太基構建目錄中刪除該框架。
注意:Apple需要SDWebimage包含簽名。因此,默認情況下,
carthage build二進制框架沒有執行代碼,這將導致驗證錯誤。您可以使用Apple Developer計劃標識或使用二進制框架簽名:
binary "https://github.com/SDWebImage/SDWebImage/raw/master/SDWebImage.json"
Swift Package Manager(SwiftPM)是管理Swift代碼分佈以及C家族依賴性的工具。從Xcode 11中,SwiftPM與Xcode一起本地集成。
SDWebimage支持5.1.0版本的SwiftPM。要使用SwiftPM,您應該使用Xcode 11打開項目。單擊File - > Swift Packages - > Add Package Dependency ,輸入SDWebimage Repo的URL。或者,您可以使用github帳戶登錄XCode,只需鍵入SDWebImage即可搜索。
選擇軟件包後,您可以選擇依賴項類型(標記版本,分支或提交)。然後,Xcode將為您設置所有內容。
如果您是框架作者並使用sdwebimage作為依賴關係,請更新您的Package.swift文件:
let package = Package (
// 5.1.0 ..< 6.0.0
dependencies : [
. package ( url : " https://github.com/SDWebImage/SDWebImage.git " , from : " 5.1.0 " )
] ,
// ...
)從5.19.2開始,SDWebimage在GitHub發行頁面上提供了規範的官方二進制XCFramework。
您可以選擇下載SDWebImage-dynamic.xcframework.zip for Dynamic Linked One或SDWebImage-static.xcframework.zip for static-clinded鏈接。
將未拉鍊的.xcframework拖到Xcode Project的框架選項卡中。
從Xcode 15中,Apple將驗證二進制XCFramework的簽名,以避免供應鏈攻擊。
目前的指紋應為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
證書存儲在此處的回購中
公共密鑰存儲在此處的存儲庫中
查看更多:驗證XCFrameWorks的起源
sudo xcode-select -s /path/to/Xcode.app
或者
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
請參閱Wiki:手動安裝指南的更多信息
在您需要使用庫的源文件中,導入雨傘標頭文件:
# import < SDWebImage/SDWebImage.h >還建議使用模塊導入語法,可用於Cocoapods(啟用modular_headers )/迦太基/swiftpm。
@import SDWebImage;
此時,您的工作空間應毫無疑問地構建。如果您有問題,請發布問題,社區可以幫助您解決它。
從Xcode 15中,我們提供新的PrivacyInfo.xcprivacy文件以獲取隱私詳細信息,請參閱《隱私清單中的數據使用》
您可以通過SwiftPM/XCFrameWork或Cocoapods( use_frameworks設置為true)來集成SDWebimage之後,在歸檔應用程序之後導出隱私報告。
對於舊版本,或者您使用的是靜態AR存檔(按應用程序商店的應用程序隱私詳細信息所要求),此處是SDWebimage的數據收集實踐列表。
感謝所有已經為SDWebimage做出貢獻的人。
所有源代碼均根據MIT許可證獲得許可。
要了解SDWebimage的架構設計以進行貢獻,請閱讀SDWebimage v5.6 Architecture的核心。感謝@looseyi的帖子和翻譯。