我目前正在开发像“kresta app”这样的应用程序。首先,我从照片库中选择图像。接下来我的工作是用户可以选择他想要应用百叶窗和阴影的区域。所以我想要做的是我有四个图钉,用户可以触摸和拖动图钉进行区域选择。我用下面的代码实现了这个逻辑。

jpg

在触摸中我称之为这个方法

 UIBezierPath *aPath = [UIBezierPath bezierPath];

// Set the starting point of the shape.
   [aPath moveToPoint:pinImageView1.center];
// Draw the lines.
[aPath addLineToPoint:pinImageView2.center];
[aPath addLineToPoint:pinImageView3.center];
[aPath addLineToPoint:pinImageView4.center];
[aPath closePath];

CAShapeLayer *square = [CAShapeLayer layer];
square.path = aPath.CGPath;
[pickedImageView.layer addSublayer:square];

我的问题是每次它添加一个图层。我如何实现这个逻辑?有什么方法可以删除前一层并更新新层?或者我的方法是错误的,如果错误请提出任何其他方式来实现这个逻辑。

最佳答案

如果在类属性中保存对此 CAShapeLayer 的引用,则可以简单地一次又一次地更新其 path 属性,它会自动更新 View 层上的子层。因此,addSublayer 一次,然后在将来,只要您想反射(reflect)覆盖屏幕上图像的形状的变化,就可以随时更新此 pathCAShapeLayer

关于iphone - 如何在ios中绘制不规则形状的矩形并用四个pin点填充颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18094608/

10-13 04:05