PocketSVG
2.7.3
一個簡單的工具包,用於以性能方式在iOS和MACO上顯示和操縱SVG。
該項目的目標不是成為完全合規的SVG解析器/渲染器。而是將SVG用作序列化CG/UIPATHS的格式,這意味著它僅支持CG/UIPATHS可以表示的SVG功能。
徹底記錄。
path , line , polyline , polygon , rect , circle , ellipseUIImageView / NSImageView或CALayer子類。CGPath 。 dependencies: [
. package ( url : " https://github.com/pocketsvg/PocketSVG.git " , . upToNextMajor ( from : " 2.6.0 " ) )
]將其添加到您的podfile中:
pod 'PocketSVG' , '~> 2.6'然後運行pod install
將其添加到您的卡特菲爾:
github "pocketsvg/PocketSVG" >= 2.7.2
然後運行carthage update --use-xcframeworks
SVGImageView渲染SVG文件 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 )輸出
注意:默認情況下,SVGlayer在iOS上運行時shouldRasterize設置為YES 。如果您需要對圖層變換進行動畫更改,則可能需要將其重置為NO 。
CAShapeLayer手動渲染SVG文件的每條路徑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 )輸出
請使用問題跟踪器報告任何錯誤或文件功能請求。
歡迎PR。