一个在 iOS 和 macOS 上以高性能方式显示和操作 SVG 的简单工具包。
这个项目的目标不是成为一个完全兼容的 SVG 解析器/渲染器。而是将 SVG 用作序列化 CG/UIPaths 的格式,这意味着它只支持可以由 CG/UIPaths 表示的 SVG 功能。
文档详尽。
path
、line
、polyline
、polygon
、rect
、circle
、ellipse
UIImageView
/NSImageView
或 CALayer
子类。CGPath
,以进行更精细的操作。dependencies: [
.package(url: "https://github.com/pocketsvg/PocketSVG.git", .upToNextMajor(from: "2.6.0"))
]
将此添加到您的 Podfile
pod 'PocketSVG', '~> 2.6'
然后运行 pod install
将此添加到您的 Cartfile
github "pocketsvg/PocketSVG" >= 2.7.2
然后运行 carthage update --use-xcframeworks
let url = Bundle.main.url(forResource: "tiger", withExtension: "svg")!
let svgImageView = SVGImageView.init(contentsOf: url)
svgImageView.frame = view.bounds
svgImageView.contentMode = .scaleAspectFit
view.addSubview(svgImageView)
注意:默认情况下,在 iOS 上运行时,SVGLayer 的 shouldRasterize
设置为 YES
。如果您需要动画化图层变换的更改,您可能需要将其重置为 NO
。
view.backgroundColor = .white
let svgURL = Bundle.main.url(forResource: "tiger", withExtension: "svg")!
let paths = SVGBezierPath.pathsFromSVG(at: svgURL)
let tigerLayer = CALayer()
for (index, path) in paths.enumerated() {
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
if index%2 == 0 {
shapeLayer.fillColor = UIColor.black.cgColor
}
else if index%3 == 0 {
shapeLayer.fillColor = UIColor.darkGray.cgColor
}
else {
shapeLayer.fillColor = UIColor.gray.cgColor
}
tigerLayer.addSublayer(shapeLayer)
}
var transform = CATransform3DMakeScale(0.4, 0.4, 1.0)
transform = CATransform3DTranslate(transform, 200, 400, 0)
tigerLayer.transform = transform
view.layer.addSublayer(tigerLayer)
请使用 issue 跟踪器 报告任何错误或提交功能请求。
欢迎 PR。