objective-c - 如何从目标C中的矩形视图中裁剪三角形视图?
问题描述
我想要如下图所示的视图:- 想要的视图 我正在使用 UIBezierPath 和 CAShapeLayer 来归档以下代码:-
UIBezierPath *path = [[UIBezierPath alloc] init];
// [[UIColor blackColor] setStroke];
// [[UIColor redColor] setFill];
[path moveToPoint:CGPointMake(_pendingView.frame.origin.x, _pendingView.frame.origin.y)];
[path addLineToPoint:CGPointMake(_pendingView.frame.origin.x+15, _pendingView.frame.origin.y+15)];
[path addLineToPoint:CGPointMake(_pendingView.frame.origin.x, _pendingView.frame.origin.y+30)];
[path closePath];
// [path fill ];
// [path stroke];
CAShapeLayer *shapeLayer = [CAShapeLayer new];
shapeLayer.frame = _pendingView.bounds;
shapeLayer.path = path.CGPath;
shapeLayer.fillColor = [UIColor redColor].CGColor;
shapeLayer.strokeColor = [UIColor blackColor].CGColor;
self.pendingView.layer.mask = shapeLayer;
// [self.pendingView.layer addSublayer:shapeLayer];
但我无法实现。视图显示没有剪辑和视图的背景颜色。
PS :-pendingview 是一个视图。
根据@inderJit 的建议,我纠正了我的代码,但我得到的输出图像不是上面附加的图像。查看导致问题的背景颜色。我怎样才能做到这一点?
解决方案
在您的代码中,您使用_pendingView
的是UIView
, 绘制路径的原点,但图层将放置在 中_pendingView
,因此您无法获得正确的输出。
如需更多说明,您可以查看以下代码
UIBezierPath *path = [[UIBezierPath alloc] init];
// [[UIColor blackColor] setStroke];
// [[UIColor redColor] setFill];
[path moveToPoint:CGPointMake(0, 0)];
[path addLineToPoint:CGPointMake(15, _vwArrow.frame.size.height/2)];
[path addLineToPoint:CGPointMake(0, _vwArrow.frame.size.height)];
[path closePath];
// [path fill ];
// [path stroke];
CAShapeLayer *shapeLayer = [CAShapeLayer new];
shapeLayer.frame = _vwArrow.bounds;
shapeLayer.path = path.CGPath;
shapeLayer.fillColor = self.view.backgroundColor.CGColor;
// shapeLayer.strokeColor = [UIColor blackColor].CGColor;
// _vwArrow.layer.masksToBounds = TRUE;
[_vwArrow.layer addSublayer:shapeLayer];
[self.view setNeedsDisplay];
推荐阅读
- javascript - 我如何做到这一点,如果你按下一个按钮,然后再按下一个不同的按钮,你会在屏幕上看到一些东西?
- azure - Connect-MsolService 非交互式
- javascript - 有没有办法在传单地图中添加文字?
- typescript - Typescript/xstate:将对象拆分为可区分的联合
- javascript - 使用 ReactDOM.createPortal() 制作模式 - 目标容器不是 DOM 元素错误
- jenkins - 如何通过 Jenkins 脚本控制台中的 groovy 脚本打印 AmazonEC2 Slave 详细信息
- react-native - React-Native 包:通过 HTTP/RSTP (.mjpg .amp) 流式传输
- c++ - 将事件绑定到自定义 wxButton
- c# - AWS SDK (C#) - 它如何创建描述实例请求以过滤掉具有特定标签键的虚拟机
- php - 请我想在 Laravel 8 中使用不同的表实现多个注册和登录,所有用户表单都在同一页面中(切换按钮)