该库提供了一个具有缓存支持的异步图像下载器。为了方便起见,我们为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的帖子和翻译。