草庐IT

CAshapeLayer

全部标签

ios - 动画 CAShapeLayer 路径变化

我正在尝试为CAShapeLayer的path属性的变化设置动画,如下所示:animatePathChange(for:progressLayer,toPath:progressPath.cgPath)progressLayer.path=progressPath.cgPath这是animatePathChange函数代码:funcanimatePathChange(forlayer:CAShapeLayer,toPath:CGPath){letanimation=CABasicAnimation(keyPath:"path")animation.duration=1.0animati

ios - 在 Swift 中检测 CAShapeLayer 上的点击?

我是iOS开发的新手(所以请原谅我的无能-我到处都看过!),并且正在寻找一种方法来检测CAShapeLayer上的点击。到目前为止,我遇到过hitTest。hitTest是最好的方法吗?如果是的话,它在Swift中如何使用,尤其是CAShapeLayer?此外,如果我有多个CAShapeLayers,我将如何使用hitTest方法来分别引用它们?这就是我创建CAShapeLayer的方式:letnewBounds=CGRect(x:0,y:0,width:200,height:200)letnewShape=CAShapeLayer()newShape.bounds=newBounds

ios - CAShapeLayer 动画(从 0 到最终大小的圆弧)

我有一个CAShapeLayer,其中使用UIBezierPath添加了一个圆弧。我在stackoverflow上看到了几个帖子(实际上是一个),但似乎没有一个给我答案。如标题中所述,我想为圆弧制作动画(是的,它将用于饼图)。如何完成从“空”弧到完全展开弧的动画?有点像弯曲的进度条。通过CoreAnimation真的不可能吗?下面是我“制作”弧线的方法。哦,忽略评论和计算,因为我习惯逆时针单位圆,而苹果顺时针旋转。弧线看起来很好,我只需要动画://Apple'sunitcirclegoesinclockwiserotationwhileimusedtocounterclockwiset

ios - 检测 CAShapeLayer 触摸

我通过覆盖绘制矩形创建了一个蜘蛛图,我正在使用核心图形CAShapeLayer绘制我的区域,在屏幕上创建了多个CAShapeLayer区域,我想检测用户触摸时触摸了哪个层。..但我不知道怎么做? 最佳答案 首先,您不应该在drawRect中绘制图层,但这不是您的问题。要识别“被触摸”的层,您可以这样做...-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{for(UITouch*touchintouches){CGPointtouchLocation=[touc

ios - 使用 UIBezierPath 和 CAShapeLayer 时为 "invalid context 0x0"

我遇到的困境与thisSOthread中描述的困境非常相似.我通读了该线程上的每个答案,但找不到任何解决我问题的答案。我已将我的问题缩小到下面函数内的4行。4行中的每一行都输出几行错误,所有错误都列在下面(我已删除重复项)。我尝试将[pathclosePath];移动到这4行下方,但它没有任何改变。我还在第一行之前设置了一个断点,并逐行手动执行该函数,而正是这4行造成了严重破坏。这个问题似乎是一种趋势,所有内容都按应有的方式呈现,但它会用这些类型的消息淹没控制台。非常感谢任何帮助,我很乐意提供更多信息和更新。功能:-(CAShapeLayer*)lineBetweenPoint:(CG

ios - 动画一个 CAShapeLayer 来绘制一个进度圈

我正在尝试画一个圆圈来指示进度。进度更新可能会很快到来,我想动画化圆圈的变化。我试过用下面的方法来做这个,但似乎没有任何效果。这可能吗?-(id)initWithFrame:(CGRect)framestrokeWidth:(CGFloat)strokeWidthinsets:(UIEdgeInsets)insets{if(self=[superinitWithFrame:frame]){self.strokeWidth=strokeWidth;CGPointarcCenter=CGPointMake(CGRectGetMidX(self.bounds),CGRectGetMidY(s

ios - 相邻的 CAShapeLayer 抗锯齿问题

我正在使用CAShapeLayer为饼图的每个切片绘制一个饼图。即使一个饼图切片的结束角度等于相邻切片的起始角度,如果切片之间的边界呈一定角度,抗锯齿也会导致每个切片之间出现底层背景颜色。我想消除切片之间的微小间隙,同时仍然使用抗锯齿,这样生成的饼图车看起来仍然很光滑。从概念上讲,似乎如果有一种方法可以对整个CALayer应用抗锯齿,并且在绘制所有饼图切片后它是饼图切片子层,那就可以了......饼图切片将相互抗锯齿而不是抗锯齿背景。我尝试了尽可能多的CALayer属性,但很难找到这方面的更多信息。有什么想法吗?更新:请参阅下面我的回答。 最佳答案

objective-c - 动画 CAShapeLayer 大小变化

我正在画一个圆,初始半径为200self.circle=[CAShapeLayerlayer];self.circle.fillColor=nil;self.circle.strokeColor=[UIColorblackColor].CGColor;self.circle.lineWidth=7;self.circle.bounds=CGRectMake(0,0,2*radius,2*radius);self.circle.path=[UIBezierPathbezierPathWithArcCenter:CGPointMake(self.radius,self.radius)谁能告

ios - 动画边界变化时的 CAShapeLayer 路径动画

我有一个CAShapeLayer(它是UIView子类的层),其path应该在View的bounds时更新尺寸变化。为此,我覆盖了图层的setBounds:重置路径的方法:@interfaceCustomShapeLayer:CAShapeLayer@end@implementationCustomShapeLayer-(void)setBounds:(CGRect)bounds{[supersetBounds:bounds];self.path=[[selfshapeForBounds:bounds]CGPath];}这工作正常,直到我为边界变化设置动画。我想让路径在任何动画边界更改

关于 ios:如何使用 CAShapeLayer 以编程方式以自定义 UIView 为中心绘制一个圆

HowtodrawacircleusingCAShapeLayertobecenteredinacustomUIViewinswiftprogrammatically我正在尝试使用CAShapeLayer在已自动约束的自定义UIView中绘制圆形进度条,我不想在我的超级视图的中心绘制我的圆圈,而是在我的自定义视图的中心因为我在上面有其他视图,所以下面的代码绘制了一个圆圈,但它没有定位在指定的视图中1234567891011121314151617181920212223//CustomViewletgaugeViewHolder=UIView()scrollView.addSubview(ga