在可缩放的 UIView 中保留 CAShapeLayer 的线宽

Preserve CAShapeLayer's lineWidth in a zoomable UIView

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

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

当我缩放时:

我想要的是,线条像放大前一样细。 我尝试过:

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);

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

需要用zoom分割线宽factor.By默认线宽为1。

因此创建 属性 同样的,当你应用缩放手势分割它时。

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

和缩放比例为 2 然后 1.0/2.0 相同

希望对您有所帮助