SDWebImageSVGKitPlugin 1.4.0

SDWebImageSVGKitPlugin 1.4.0

DreamPiggyBogdan Poplauschi 维护。



 
依赖项
SDWebImage.Core~> 5.10
SVGKit~> 3.0
 

  • 作者
  • DreamPiggy

SDWebImageSVGKitPlugin

CI Status Version License Platform Carthage compatible

用途

SDWebImageSVGKitPlugin 是一个 SVG 编码插件,为 SDWebImage 框架提供支持,使用 SVGKit SVG 引擎实现 SVG 图像的支持。

注意:iOS 13+/macOS 10.15+ 支持原生 SVG 渲染(称为 Symbol Image),使用系统框架加载 SVG。有关更多信息,请参阅 SDWebImageSVGCoder

示例

要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install

您可以修改代码或使用其他 SVG 文件以检查兼容性。

要求

  • iOS 9+
  • tvOS 9+
  • macOS 10.11+
  • Xcode 11+

安装

CocoaPods

SDWebImageSVGKitPlugin可以通过CocoaPods获取。要安装它,只需在Podfile中添加以下行

pod 'SDWebImageSVGKitPlugin'

Swift Package Manager (Xcode 11及以上)

SDWebImagePhotosPlugin可以通过Swift Package Manager获取。

let package = Package(
    dependencies: [
        .package(url: "https://github.com/SDWebImage/SDWebImageSVGKitPlugin.git", from: "1.4")
    ]
)

Carthage

SDWebImageSVGKitPlugin可以通过Carthage获取。

github "SDWebImage/SDWebImageSVGKitPlugin"

用法

使用UIImageView(将SVG渲染为位图图像)

要使用SVG编码器,您首先应该将SDImageSVGKCoder添加到编码器管理器。然后您可以通过调用视图分类方法来开始加载SVG图像。

因为SVG是一种矢量图像格式,这意味着它没有固定的位图大小。然而,UIImageCGImage都是位图图像。对于UIImageView,我们只会解析具有固定图像大小(从SVG视图窗口信息中获取)的SVG。但我们也支持您使用SDWebImageContextThumbnailPixelSize上下文选项在图像加载期间指定所需的大小。并且您可以使用SDWebImageContextImagePreserveAspectRatio上下文选项指定是否在缩放时保持纵横比。

  • Objective-C
SDImageSVGKCoder *svgCoder = [SDImageSVGKCoder sharedCoder];
[[SDImageCodersManager sharedManager] addCoder:svgCoder];
UIImageView *imageView;
// this arg is optional, if don't provide, use the viewport size instead
CGSize svgImageSize = CGSizeMake(100, 100);
[imageView sd_setImageWithURL:url placeholderImage:nil options:0 context:@{SDWebImageContextThumbnailPixelSize : @(svgImageSize)];
  • Swift
let svgCoder = SDImageSVGKCoder.shared
SDImageCodersManager.shared.addCoder(svgCoder)
let imageView: UIImageView
imageView.sd_setImage(with: url)
// this arg is optional, if don't provide, use the viewport size instead
let svgImageSize = CGSize(width: 100, height: 100)
imageView.sd_setImage(with: url, placeholderImage: nil, options: [], context: [.imageThumbnailPixelSize : svgImageSize])

使用SVGKImageView(将SVG作为矢量图像渲染)

SVGKit还为矢量图像加载提供一些内置图像视图类(无损失细节地缩放任何大小)。SVGKLayeredImageViewSVGKFastImageViewSVGKImageView基类的子类。我们同样支持这些图像视图类。您可以使用与正常UIImageView相同的API。

关于SVGKLayeredImageViewSVGKFastImageViewSVGKImageView的文档,请访问SVGKit仓库以获取更多信息。

注意:如果您只使用这些图像视图类,而不在UIImageView中使用SVG,您不需要将SVG编码器注册到编码器管理器中。这些图像视图加载使用了SDWebImage的自定义图像类功能。

注意:这些内置图像视图类在UIView.contentMode属性上不太好用,您需要图像加载后重新缩放层树。我们提供了一个简单的现成解决方案来支持它。将sd_adjustContentMode属性设置为YES即可。

  • Objective-C
SVGKImageView *imageView; // can be either `SVGKLayeredImageView` or `SVGKFastImageView`
imageView.contentMode = UIViewContentModeScaleAspectFill;
imageView.sd_adjustContentMode = YES; // make `contentMode` works
[imageView sd_setImageWithURL:url];
  • Swift
let imageView: SVGKImageView // can be either `SVGKLayeredImageView` or `SVGKFastImageView`
imageView.contentMode = .aspectFill
imageView.sd_adjustContentMode = true // make `contentMode` works
imageView.sd_setImage(with: url)

导出SVG数据

SDWebImageSVGKitPlugin提供了一种简单的方法,可以将框架生成的SVG图像导出为原始SVG数据。

  • Objective-C
UIImage *image; // Image generated from SDWebImage framework, actually a `SDSVGKImage` instance.
NSData *imageData = [image sd_imageDataAsFormat:SDImageFormatSVG];
  • Swift
let image: UIImage // Image generated from SDWebImage framework, actually a `SDSVGKImage` instance.
let imageData = image.sd_imageData(as: .SVG)

截图

这些SVG图像来自维基百科,您也可以使用自己的SVG图像尝试演示。

作者

DreamPiggy

许可证

SDWebImageSVGKitPlugin遵循MIT许可证。详细信息请参阅LICENSE文件。