gpt4 book ai didi

ios - 使用 CAShapeLayer 和 UIBezierPath 剪辑屏蔽 uiview

转载 作者:可可西里 更新时间:2023-11-01 03:04:49 26 4
gpt4 key购买 nike

我在使用 CAShapeLayer-UIBezierPath 裁剪 View 时遇到问题,我想裁剪内容但我最终得到了那个 UIBezierPath 的笔划(框架),这是我的代码

UIBezierPath *path2Path = [UIBezierPath bezierPath];
[path2Path moveToPoint:CGPointMake(206.745, 0)];
[path2Path addLineToPoint:CGPointMake(206.745, 97.613)];
[path2Path addLineToPoint:CGPointMake(0, 97.613)];
[path2Path addLineToPoint:CGPointMake(0, 0)];
[path2Path addLineToPoint:CGPointMake(87.28, 0)];
[path2Path addCurveToPoint:CGPointMake(103.808, 12.118) controlPoint1:CGPointMake(87.28, 0) controlPoint2:CGPointMake(86.555, 12.118)];
[path2Path addCurveToPoint:CGPointMake(119.466, 0) controlPoint1:CGPointMake(121.061, 12.118) controlPoint2:CGPointMake(119.466, 0)];
[path2Path addLineToPoint:CGPointMake(206.745, 0)];
[path2Path closePath];

[path2Path addClip];

CAShapeLayer *pathLayer = [CAShapeLayer layer];
pathLayer.frame=MYVIEW.bounds;
pathLayer.path = path2Path.CGPath;

pathLayer.strokeColor = [[UIColor blackColor] CGColor];
pathLayer.fillColor = [[UIColor clearColor] CGColor];

pathLayer.fillRule=kCAFillRuleEvenOdd;
[MYVIEW.layer setMask:pathLayer];
[MYVIEW.layer setMasksToBounds:YES];

MYVIEW.backgroundColor=[UIColor greenColor];

这段代码的结果只是一条绿色的描边线,边界是空的,像这样 http://i.stack.imgur.com/aehdo.png

但是,我想让边界变成绿色,被那个笔画剪掉

最佳答案

作为rob mayoff 您可以通过将 View 的图层蒙版设置为 CAShapeLayer 轻松地做到这一点。

UIBezierPath *myClippingPath = ...
CAShapeLayer *mask = [CAShapeLayer layer];
mask.path = myClippingPath.CGPath;
myView.layer.mask = mask;

在 Swift 中

let myClippingPath = UIBezierPath( ... )
let mask = CAShapeLayer()
mask.path = myClippingPath.CGPath
myView.layer.mask = mask

关于ios - 使用 CAShapeLayer 和 UIBezierPath 剪辑屏蔽 uiview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30938134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com