gpt4 book ai didi

iphone - 如何在保持完整原点的同时拉伸(stretch) CALayer?

转载 作者:行者123 更新时间:2023-12-03 19:19:30 24 4
gpt4 key购买 nike

我试图通过应用 CATransform3DMakeScale 来拉伸(stretch)我拥有的 UIView:

CATransform3DMakeScale(0.9, 1.0 - (0.1 * (path.row - midPath.row)), 1)

这个问题有两个方面:它给我留下了分数帧/边界,我似乎无法对其进行舍入或取整,并且它将我的帧的原点拉低,使其 y 原点不再为 0。

有没有一种方法可以让我只在一个方向上拉伸(stretch)我的图层?换句话说,保持 x 和 y 原点固定,并向该原点或远离该原点拉伸(stretch)。

此外,是否有文档说明 CATransform3D 中不同 mxx 变量的影响?我环顾四周,没有找到任何东西,反复试验只能让我到目前为止。

最佳答案

如果您想在拉伸(stretch) CALayer 时保持固定原点,您可以更改其 anchorPoint 属性,如下所示:

layer.anchorPoint = CGPointMake(0.0f, 0.0f);

anchorPoint 确定将哪些变换应用于图层的点。它还与图层的 position 属性相关,因此,如果您调整 anchorPoint,之后可能需要重新定位图层。

通过设置 anchor ,您应该能够将图层设置在完整的原点坐标处,并使其随着变换而拉伸(stretch)。但是,您不会保持完整的宽度和高度。

就 CATransform3D 的 m12 等元素而言,该结构是 4 x 4 矩阵:

struct CATransform3D
{
CGFloat m11, m12, m13, m14;
CGFloat m21, m22, m23, m24;
CGFloat m31, m32, m33, m34;
CGFloat m41, m42, m43, m44;
};
typedef struct CATransform3D CATransform3D;

其中每个值代表矩阵中的一个位置。该矩阵基于 OpenGL 的 3-D 矩阵,如模型 View 矩阵。 Core Animation 提供了辅助函数来完成您需要的该矩阵的大部分操作,但您有时会设置一个矩阵元素(例如用于透视效果的 m34)。

我从来不擅长矩阵数学,但您可以查找人们为 OpenGL 模型 View 矩阵背后的数学而整理的任何文章,并在此处应用它们。

关于iphone - 如何在保持完整原点的同时拉伸(stretch) CALayer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5342055/

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