有人可以向我解释CALayer contentsRect属性的坐标系吗?

我意识到CALayercontentsRect属性( 文档在这里 )允许定义图层的多less,但是我不明白坐标系是如何工作的。

看来,当宽度/高度较小时,用于内容的区域较大,反之亦然。 类似地,x,y这两个负向的位置似乎将内容区域向下移动到与我的直觉相反的右侧。

有人可以解释为什么这是? 我确信有一个很好的理由,但我认为我错过了一些graphics编程背景。

CALayer的contentsRect属性(文档在这里)允许定义多less图层用于绘图

不,你正在考虑错误。

contentsRect指定contents图像的哪一部分将显示在图层中。

然后根据contentsGravity属性将该部分排列在该层中。

如果这是kCAGravityResize ,默认情况下,这将导致零件被resize以适应图层。 这将解释你看到的违反直觉的行为 – 你使contentsRect变小,但图层看起来是相同的大小,它似乎“放大”在图像的选定部分。 如果将kCAGravityCenter设置为kCAGravityCenter (不会resize),您可能会发现更容易理解。

大多数情况下,您将contentsRect设置为标识rect { {0, 0}, {1, 1} }某个子rect,因此您select仅看到部分内容。

(如果你喜欢,可以把它们看作是百分比 – 如果contentsRect的大小是{0.5, 0.5} ,那么你select了50%的contents 。)

如果contentsRect一部分超出了标识直angular,则CA将向外扩展内容的边缘像素。 这在某些情况下非常方便,但不是您自己使用的东西 – 您可以将其与掩码或其他图层结合使用,以达到某种效果。