gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:36:50 25 4
gpt4 key购买 nike

我意识到 CALayer ( documentation here ) 的 contentsRect 属性允许定义用于绘图的层的多少,但我不明白如何我认为坐标系有效。

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

谁能解释一下这是为什么?我确信这是有充分理由的,但我想我缺少一些图形编程背景。

最佳答案

the contentsRect property of CALayer (documentation here) allows one to define how much of the layer to use for drawing

不,你想错了。

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

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

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

大多数时候,您会将 contentsRect 设置为身份 rect { {0, 0}, {1, 1} } 的某个子矩形,所以你选择只看部分内容。

(如果您愿意,可以将这些视为百分比——如果 contentsRect 的大小为 {0.5, 0.5},您将选择 的 50% >内容。)

如果 contentsRect 的一部分超出了 identity rect,那么 CA 将向外扩展 contents 的边缘像素。这在某些情况下很方便,但您不能单独使用它——您可以将它与蒙版或其他一些图层结合使用以达到某种效果。

关于objective-c - 有人可以向我解释 CALayer contentsRect 属性的坐标系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10117755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com