SDWebImageSVGNativeCoder 0.2.0

SDWebImageSVGNativeCoder 0.2.0

DreamPiggy 维护。



 
依赖
SDWebImage~> 5.10
svgnative~> 0.1
 

  • 作者
  • dreampiggy

SDWebImageSVGNativeCoder

CI Status Version License Platform

背景

目前,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文件。