6

我意识到(此处的文档contentsRect)的属性允许定义用于绘制的图层的多少,但我认为我不明白坐标系是如何工作的。CALayer

似乎当宽度/高度较小时,用于内容的区域较大,反之亦然。同样,负 x,y 位置似乎将内容区域向下和向右移动,这与我的直觉相反。

有人可以解释这是为什么吗?我确信这是有充分理由的,但我认为我缺少一些图形编程背景。

4

1 回答 1

20

CALayer 的 contentsRect 属性(此处的文档)允许定义用于绘图的图层的多少

不,你想错了。

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

然后根据contentsGravity属性将该部分布置在层中。

如果这是kCAGravityResize,默认值,这将导致部分调整大小以适合图层。这可以解释你所看到的违反直觉的行为——你contentsRect缩小了,但图层看起来是相同的大小,并且它似乎在图像的选定部分“放大”。如果设置contentsGravitykCAGravityCenter不会调整大小,您可能会发现更容易理解。

大多数时候,您会将 设置为contentsRect标识 rect 的某个子矩形{ {0, 0}, {1, 1} },因此您选择只查看部分内容。

(如果您愿意,可以将这些视为百分比 - 如果contentsRect大小为{0.5, 0.5},则您选择 50% contents。)

如果部分contentsRect超出恒等矩形,则 CA 将contents向外扩展边缘像素。这在某些情况下很方便,但它不是您自己使用的东西——您可以将它与蒙版或其他一些图层结合使用以达到某种效果。

于 2012-04-12T05:37:58.490 回答