转换Stroked CAShapeLayer

时间:2012-12-25 19:46:54

标签: iphone ios cocoa-touch caanimation cashapelayer

我有一个CAShapeLayer,其中包含一个CGMutablePath,周围有一个笔划。在我的应用中,我将此CAShapeLayer转换为在特定时间增加/减少它的大小。我注意到当我转换CAShapeLayer时,stroke也会被转换。理想情况下,即使lineWidth转换,我也希望stroke的{​​{1}}始终保持在3。

我尝试在转换之前关闭中风然后再读取它但是它不起作用:

CAShapeLayers

有谁知道我怎么能完成这项任务?似乎它应该能够以某种方式转换后重绘笔画。

1 个答案:

答案 0 :(得分:3)

转换CGPath本身而不是其绘制的表示(CAShapeLayer)。

仔细查看CGPathCreateMutableCopyByTransformingPath - CGPath Reference

CGPathCreateMutableCopyByTransformingPath
  

创建由a转换的图形路径的可变副本   转换矩阵。

CGMutablePathRef CGPathCreateMutableCopyByTransformingPath(
   CGPathRef path,
   const CGAffineTransform *transform
);

<强>参数

path要复制的路径。

transform指向仿射变换矩阵的指针,如果不需要转换则为NULL。如果指定,Quartz将转换应用于新路径的所有元素。 回报价值 由transform参数转换的指定路径的新的可变副本。您有责任释放此对象。

状况 适用于iOS 5.0及更高版本。 宣告进入 CGPath.h