SDWebImageSVGNativeCoder
背景
目前,SDWebImage org 提供了 3 种 SVG 编码插件支持,以下是对比
插件名称 | 矢量图像 | 位图图像 | 平台 | 兼容性 | 依赖 |
---|---|---|---|---|---|
SVGNativeCoder | 否 | 是 | iOS 9+ | 最佳选择,符合 W3C 标准 | adobe/svg-native-viewer |
SVGCoder | 是 | 是 | iOS 13+ | 良好,但某些 SVG 上有故障 | Apple CoreSVG(私有) |
SVGKitPlugin | 是 | 否 | iOS 9+ | 最差,不再维护 | SVGKit/SVGKit |
目前,我推荐在大多数情况下使用此 SVGNativeCoder (此仓库),直到 Apple 平台上出现任何其他原生支持。
SVG-Native
SVG Native 是 SVG 工作组基于 SVG OpenType 开发的一个新规范。
SVG Native 将是 SVG 1.1 和 SVG 2.0 的一个严格子集。
需求
- iOS 9+
- tvOS 9+
- macOS 10.11+
- watchOS 2+
安装
CocoaPods
SDWebImageSVGNativeCoder 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'SDWebImageSVGNativeCoder'
注意
强烈推荐使用 CocoaPods v1.7+ 与多个 Xcode 项目一起使用,这可以避免不同头文件包含相同文件名时的问题。这适用于所有 SDWebImage 组织维护的仓库。
install! 'cocoapods', generate_multiple_pod_projects: true
Carthage
SDWebImageSVGNativeCoder 通过 Carthage 提供。
github "SDWebImage/SDWebImageSVGNativeCoder"
Swift 包管理器
SDWebImageSVGNativeCoder 通过 Swift 包管理器 提供使用。
let package = Package(
dependencies: [
.package(url: "https://github.com/SDWebImage/SDWebImageSVGNativeCoder.git", from: "0.1")
]
)
使用方法
注册编码器插件
要使用 SVG 编码器,您应首先将 SDImageSVGNativeCoder
添加到编码器管理器。然后您可以通过调用视图分类方法开始加载 SVG 图像。有关这些步骤,请参阅此处Wiki - 编码器使用。
- Objective-C
// register coder, on AppDelegate
SDImageSVGNativeCoder *SVGCoder = [SDImageSVGNativeCoder sharedCoder];
[[SDImageCodersManager sharedManager] addCoder:SVGCoder];
- Swift
// register coder, on AppDelegate
let SVGCoder = SDImageSVGNativeCoder.shared
SDImageCodersManager.shared.addCoder(SVGCoder)
将 SVG 渲染为位图图像
此编码器插件仅支持位图 SVG 图像,这意味着一旦您加载了一个图像,即使您更改了图像视图的大小,图像的大小也不会动态更改,并且可能需要拉伸并可能变模糊。因此,您最好提供足够大的图像尺寸(例如您图像视图的大小)。
默认情况下使用SVG viewBox的大小。您也可以在图像加载时使用.imageThumbnailPixelSize
上下文选项指定所需的大小。并且您可以使用.imagePreserveAspectRatio
上下文选项指定在缩放时是否保持纵横比。
- Objective-C
UIImageView *imageView;
CGSize bitmapSize = CGSizeMake(500, 500);
[imageView sd_setImageWithURL:url placeholderImage:nil options:0 context:@{SDWebImageContextThumbnailPixelSize: @(bitmapSize)];
- Swift
let imageView: UIImageView
let bitmapSize = CGSize(width: 500, height: 500)
imageView.sd_setImage(with: url, placeholderImage: nil, options: [], context: [.imageThumbnailPixelSize : bitmapSize])
示例
要运行示例项目,首先克隆存储库,然后从Example目录运行pod install
。
截图
作者
DreamPiggy
许可协议
SDWebImageSVGNativeCoder支持MIT许可协议。更多信息请参阅LICENSE文件。