ios通过svg截取头像

        UIImageView* testImg=[[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 50, 50)];
        testImg.image=[UIImage imageNamed:@"登录背景"];
    PocketSVG *myVectorDrawing = [[PocketSVG alloc] initFromSVGFileNamed:@"tes"];
    [[UIColor whiteColor] setStroke];
    UIBezierPath *myBezierPath = myVectorDrawing.bezier;
    CAShapeLayer *myShapeLayer = [CAShapeLayer layer];
    myShapeLayer.path = myBezierPath.CGPath;

    myShapeLayer.strokeColor = [[UIColor whiteColor] CGColor];

    //这里取决于svg大小,计算缩放比例,我的svg大小是96*96

     myShapeLayer.affineTransform= CGAffineTransformMakeScale(50/96, 50/96);  

    testImg.layer.mask = myShapeLayer;

   [self.view addSubview:testImg];

效果图:



   
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` 中显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值