如何在 UIImageView 中添加箭头?
How to add an arrow in UIImageView?
我必须在 UIImageView
中添加一个箭头。它可能像 UIImageView
中的透明 space。附加了一个示例图像并用黄色框突出显示。
使用蒙版,比如你有一张200*100的图片
代码
CAShapeLayer * shapeLayer = [CAShapeLayer layer];
UIBezierPath * bezierPath = [UIBezierPath bezierPath];
[bezierPath moveToPoint:CGPointMake(0, 0)];
[bezierPath addLineToPoint:CGPointMake(0,100)];
[bezierPath addLineToPoint:CGPointMake(10,100)];
[bezierPath addLineToPoint:CGPointMake(20,90)];
[bezierPath addLineToPoint:CGPointMake(30, 100)];
[bezierPath addLineToPoint:CGPointMake(200,100)];
[bezierPath addLineToPoint:CGPointMake(200, 0)];
[bezierPath closePath];
shapeLayer.path = bezierPath.CGPath;
self.imageview.layer.mask = shapeLayer;
注意:剪辑部分仍然可以捕获触摸事件或手势作为Imageview
的一部分,您可以将pointInside
重写为忽略触摸事件
编辑关于它的工作原理
你只需要创建你喜欢的任何形状,关于代码我只是创建一个这样的形状,然后使用这个形状来设置遮罩
所以,如果你想制作一个右箭头,只需创建一个像这样的形状
CAShapeLayer * shapeLayer = [CAShapeLayer layer];
UIBezierPath * bezierPath = [UIBezierPath bezierPath];
[bezierPath moveToPoint:CGPointMake(0, 0)];
[bezierPath addLineToPoint:CGPointMake(0,100)];
[bezierPath addLineToPoint:CGPointMake(170,100)];
[bezierPath addLineToPoint:CGPointMake(180,90)];
[bezierPath addLineToPoint:CGPointMake(190, 100)];
[bezierPath addLineToPoint:CGPointMake(200,100)];
[bezierPath addLineToPoint:CGPointMake(200, 0)];
[bezierPath closePath];
shapeLayer.path = bezierPath.CGPath;
形状截图
所以,你需要的是
- 找出你想要的形状(轮廓蒙版形状)
- 使用 bezierPath 绘制
- 设置掩码
我必须在 UIImageView
中添加一个箭头。它可能像 UIImageView
中的透明 space。附加了一个示例图像并用黄色框突出显示。
使用蒙版,比如你有一张200*100的图片
代码
CAShapeLayer * shapeLayer = [CAShapeLayer layer];
UIBezierPath * bezierPath = [UIBezierPath bezierPath];
[bezierPath moveToPoint:CGPointMake(0, 0)];
[bezierPath addLineToPoint:CGPointMake(0,100)];
[bezierPath addLineToPoint:CGPointMake(10,100)];
[bezierPath addLineToPoint:CGPointMake(20,90)];
[bezierPath addLineToPoint:CGPointMake(30, 100)];
[bezierPath addLineToPoint:CGPointMake(200,100)];
[bezierPath addLineToPoint:CGPointMake(200, 0)];
[bezierPath closePath];
shapeLayer.path = bezierPath.CGPath;
self.imageview.layer.mask = shapeLayer;
注意:剪辑部分仍然可以捕获触摸事件或手势作为Imageview
的一部分,您可以将pointInside
重写为忽略触摸事件
编辑关于它的工作原理
你只需要创建你喜欢的任何形状,关于代码我只是创建一个这样的形状,然后使用这个形状来设置遮罩
所以,如果你想制作一个右箭头,只需创建一个像这样的形状
CAShapeLayer * shapeLayer = [CAShapeLayer layer];
UIBezierPath * bezierPath = [UIBezierPath bezierPath];
[bezierPath moveToPoint:CGPointMake(0, 0)];
[bezierPath addLineToPoint:CGPointMake(0,100)];
[bezierPath addLineToPoint:CGPointMake(170,100)];
[bezierPath addLineToPoint:CGPointMake(180,90)];
[bezierPath addLineToPoint:CGPointMake(190, 100)];
[bezierPath addLineToPoint:CGPointMake(200,100)];
[bezierPath addLineToPoint:CGPointMake(200, 0)];
[bezierPath closePath];
shapeLayer.path = bezierPath.CGPath;
形状截图
所以,你需要的是
- 找出你想要的形状(轮廓蒙版形状)
- 使用 bezierPath 绘制
- 设置掩码