iOS 加载SVG图的代码
时间: 2023-03-21 19:00:20 浏览: 71
在 iOS 中,可以使用 `CAShapeLayer` 和 `UIBezierPath` 类来加载和显示 SVG 图像。以下是一个简单的示例代码:
```swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 创建一个 CAShapeLayer
let shapeLayer = CAShapeLayer()
shapeLayer.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
view.layer.addSublayer(shapeLayer)
// 创建一个 UIBezierPath 对象,并从 SVG 文件加载路径
let path = UIBezierPath(svgPath: "path_to_svg_file.svg")
// 将路径添加到 CAShapeLayer 中
shapeLayer.path = path.cgPath
// 设置一些 CAShapeLayer 的属性
shapeLayer.fillColor = UIColor.blue.cgColor
shapeLayer.strokeColor = UIColor.red.cgColor
shapeLayer.lineWidth = 2.0
}
}
```
在这个例子中,我们创建了一个 `CAShapeLayer` 并将其添加到视图层次结构中。然后,我们使用 `UIBezierPath` 的 `svgPath` 初始化方法,从 SVG 文件中加载路径并将其添加到 `CAShapeLayer` 中。最后,我们设置一些 `CAShapeLayer` 的属性,例如填充颜色、描边颜色和线宽。
需要注意的是,上述代码中使用的 `UIBezierPath` 扩展是自定义的,需要先在项目中添加以下代码:
```swift
extension UIBezierPath {
convenience init(svgPath: String) {
self.init()
if let svgURL = Bundle.main.url(forResource: svgPath, withExtension: nil) {
do {
let svgString = try String(contentsOf: svgURL, encoding: .utf8)
let svgParser = SVGParser(string: svgString)
let svgPaths = svgParser.paths
for path in svgPaths {
self.append(path)
}
} catch {
print("Error loading SVG file: \(error.localizedDescription)")
}
} else {
print("SVG file not found")
}
}
}
```
这个扩展会解析 SVG 文件并将其转换为一个或多个 `UIBezierPath` 对象,可以将其添加到 `CAShapeLayer` 中显示。