PocketSVG
2.7.3
iOSおよびmacOSにSVGを表示および操作するためのシンプルなツールキットは、パフォーマンスの方法で。
このプロジェクトの目標は、完全に準拠したSVGパーサー/レンダラーではないことです。むしろ、SVGをCG/UIPATHSのシリアル化の形式として使用することです。つまり、CG/UIPATHSで表現できるSVG機能のみをサポートします。
徹底的に文書化されています。
path 、 line 、 polyline 、 polygon 、 rect 、 circle 、 ellipseUIImageView / NSImageViewまたはCALayerサブクラスとしての典型的なSVGレンダリング用の簡単なAPI。CGPathとしてSVG内のあらゆる形状にアクセスします。 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で実行するときに[ YESに設定]をshouldRasterizeがあります。レイヤーの変換に変更をアニメーション化する必要がある場合は、それを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は大歓迎です。