在可缩放的UIView中保留CAShapeLayer的lineWidth

时间:2018-02-05 05:25:23

标签: ios objective-c uiview cashapelayer cgpath

我有一个自定义UIView,它有一个UIImageView作为'子视图来显示图像,一个CAShapeLayer作为一个子图层来绘制它。 UIView是可缩放的,我使用UIPinchGestureRecognizer来放大和缩小视图。我可以使用CGPathRef在视图上绘制直线。问题是,当我捏​​缩放视图时,我绘制的线条也会变焦并变粗。如何放大视图,保持线条变薄?

在缩放之前(绿线是我画的):

enter image description here

当我缩放时:

enter image description here

我想要的是,线条要像我放大之前那样细。 我试着:

CGMutablePath path = CGPathCreateMutable();

//line drawing code here

//scale path to 1.0?
CGAffineTransform transform = CGAffineTransformMakeScale(1.0, 1.0);
CGPathRef transformedPath = CGPathCreateCopyByTransformingPath(path, &transform);
self.drawingLayer.path = transformedPath;
CGPathRelease(path);
CGPathRelease(transformedPath);

如何在缩放时防止路径宽度放大?

1 个答案:

答案 0 :(得分:0)

您需要将线宽除以缩放系数。默认线宽为1。

因此,创建相同的属性,并在应用缩放时用手势划分它。

即缩放= 4.0然后行宽= 1.0 / 4.0

和缩放是2然后1.0 / 2.0

相同

希望它有用