我意识到(此处的文档contentsRect
)的属性允许定义用于绘制的图层的多少,但我认为我不明白坐标系是如何工作的。CALayer
似乎当宽度/高度较小时,用于内容的区域较大,反之亦然。同样,负 x,y 位置似乎将内容区域向下和向右移动,这与我的直觉相反。
有人可以解释这是为什么吗?我确信这是有充分理由的,但我认为我缺少一些图形编程背景。
我意识到(此处的文档contentsRect
)的属性允许定义用于绘制的图层的多少,但我认为我不明白坐标系是如何工作的。CALayer
似乎当宽度/高度较小时,用于内容的区域较大,反之亦然。同样,负 x,y 位置似乎将内容区域向下和向右移动,这与我的直觉相反。
有人可以解释这是为什么吗?我确信这是有充分理由的,但我认为我缺少一些图形编程背景。
CALayer 的 contentsRect 属性(此处的文档)允许定义用于绘图的图层的多少
不,你想错了。
contentsRect
指定图像的哪一部分将contents
显示在图层中。
然后根据contentsGravity
属性将该部分布置在层中。
如果这是kCAGravityResize
,默认值,这将导致部分调整大小以适合图层。这可以解释你所看到的违反直觉的行为——你contentsRect
缩小了,但图层看起来是相同的大小,并且它似乎在图像的选定部分“放大”。如果设置contentsGravity
为kCAGravityCenter
不会调整大小,您可能会发现更容易理解。
大多数时候,您会将 设置为contentsRect
标识 rect 的某个子矩形{ {0, 0}, {1, 1} }
,因此您选择只查看部分内容。
(如果您愿意,可以将这些视为百分比 - 如果contentsRect
大小为{0.5, 0.5}
,则您选择 50% contents
。)
如果部分contentsRect
超出恒等矩形,则 CA 将contents
向外扩展边缘像素。这在某些情况下很方便,但它不是您自己使用的东西——您可以将它与蒙版或其他一些图层结合使用以达到某种效果。