Ios 如何使Cabasicanization在超层边界之外不可见?

Ios 如何使Cabasicanization在超层边界之外不可见?,ios,uiview,uibezierpath,cabasicanimation,Ios,Uiview,Uibezierpath,Cabasicanimation,我试图将一个三角形从UIView边界外移动到UIView区域 我用的是UIBezierPath 当三角形在区域外时,我希望它是不可见的。 我只希望UIView内部的三角形部分可见 不幸的是,它在整个动画中都是可见的(在边界之外和内部) 这是我的代码: UIBezierPath *triangle = [UIBezierPath bezierPath]; [triangle moveToPoint:CGPointMake(X, Y)]; [triangle addLineToPoint:CGPoi

我试图将一个三角形从UIView边界外移动到UIView区域

我用的是UIBezierPath

当三角形在区域外时,我希望它是不可见的。 我只希望UIView内部的三角形部分可见

不幸的是,它在整个动画中都是可见的(在边界之外和内部)

这是我的代码:

UIBezierPath *triangle = [UIBezierPath bezierPath];
[triangle moveToPoint:CGPointMake(X, Y)];
[triangle addLineToPoint:CGPointMake(X - (width*0.5), Y)];
[triangle addLineToPoint:CGPointMake(X, Y + (width*0.5))];
[triangle closePath];
CAShapeLayer *triLayer = [CAShapeLayer layer];
triLayer.frame = testView.bounds;
triLayer.path = triangle.CGPath;
triLayer.strokeColor = [[UIColor redColor] CGColor];
triLayer.fillColor = [[UIColor yellowColor] CGColor];

[testView.layer addSublayer:triLayer];

CABasicAnimation *triangleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
triangleAnimation.duration=0.5;
triangleAnimation.repeatCount=1;
triangleAnimation.autoreverses=NO;

triangleAnimation.fromValue=[NSNumber numberWithFloat:(width*0.5)];
triangleAnimation.toValue=[NSNumber numberWithFloat:0];
triangleAnimation.removedOnCompletion = NO;
triangleAnimation.fillMode = kCAFillModeForwards;

[triLayer addAnimation:triangleAnimation forKey:@"animateLayer"];

如果有对superview本身的引用,则可以将其上的
clipsToBounds
属性设置为
YES
。否则,您可以使用
CALayer
masksToBounds
属性执行相同的操作。

使用

testView.layer.masksToBounds = YES;