Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIBezierPath填充与CAShapeLayer_Ios_Swift_Uibezierpath_Cashapelayer - Fatal编程技术网

Ios UIBezierPath填充与CAShapeLayer

Ios UIBezierPath填充与CAShapeLayer,ios,swift,uibezierpath,cashapelayer,Ios,Swift,Uibezierpath,Cashapelayer,我试图画一个简单的形状作为游戏界面的一部分,大多数教程都使用UIBezierPath来定义CAShapeLayer的路径。但是,我注意到UIBezierPath已经有了一个现有的 这可能是一个愚蠢的问题,但使用它和使用单独的CAShapeLayer绘制路径有什么区别?另外,哪一个更好?CAShapeLayer中的“CA”代表CoreAnimation 如果您希望在UIBezierPath中设置动画、移动、操纵或处理任何其他内容,则需要使用CALayer(或其子类CAShapeLayer) 如果您

我试图画一个简单的形状作为游戏界面的一部分,大多数教程都使用UIBezierPath来定义CAShapeLayer的路径。但是,我注意到UIBezierPath已经有了一个现有的

这可能是一个愚蠢的问题,但使用它和使用单独的CAShapeLayer绘制路径有什么区别?另外,哪一个更好?

CAShapeLayer中的“CA”代表CoreAnimation

如果您希望在
UIBezierPath
中设置动画、移动、操纵或处理任何其他内容,则需要使用
CALayer
(或其子类
CAShapeLayer

如果您只想“绘制”,UIBezierPath是正确的选择,通常在
draw(rect:)
中完成。如果愿意,您也可以“重新绘制”


但是,如果您想要对形状进行持久化(和控制),请将
UIBezierPath
转换为
CAShapeLayer

如果我们想用颜色填充UIBezierPath并渲染它,该怎么办?难道CAShapeLayer不是我们唯一的选择吗@dfdI认为最准确的答案是“视情况而定”。你没有使用-或者对我来说暗示使用-动画这个词,所以我会说“不”。所有视图都有一个可以覆盖的
draw(rect:)
函数,其中包含一个可以在中绘制
UIBezierPath
的上下文。此路径可以具有笔划和填充颜色。如果您选择关闭贝塞尔路径,它将用填充颜色填充封闭的路径。是的,这是可能发生的一些事情,
CAShapeLayer
提供了一个可以设置动画的层,但它不是唯一的选择。我理解,我的意思是我问过,因为当我用CAShapeLayer从路径创建一个形状时,它非常容易精确地渲染,但使用cgcontextref有时会是一场噩梦。这就是我被困在这个@dfd的原因。如果你能指导我,我将非常感激。