gpt4 book ai didi

ios - 像UIViewAnimationOptionTransitionFlipFromRight一样使用CATransform3DRotate设置layer.transform

转载 作者:行者123 更新时间:2023-12-02 03:03:11 27 4
gpt4 key购买 nike

我设置了一个 View ,以便当应用向前导航时,它会使用 UIViewAnimationOptionTransitionFlipFromRight 选项执行 transitionFromView。这会产生如下效果:

Using UIViewAnimationOptionTransitionFlipFromRight

向后导航使用UIViewAnimationOptionTransitionFlipFromLeft,但其他方面是相同的。好的,到目前为止,一切都很好。

现在,我还设置了一个 UIPanGestureRecognizer,以便我可以将 View 的翻转与用户在屏幕上的水平手势联系起来。但显然在这种情况下我不能使用 transitionFromView,因此我的手势识别器手动设置 layertransform 属性:

CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0 / -800.0;
viewToTransform.layer.transform = CATransform3DRotate(transform, M_PI * rotationPercent, 0.0, 1.0, 0.0);

但这会产生微妙不同的效果:

CATransform3DRotate

transitionFromViewUIViewAnimationOptionTransitionFlipFromRight 选项中, View 在翻转动画期间进行缩放,以便翻转 View 的最高边缘保持容器 View 的高度。但是,当手动对进行变换时, View 的中心保持恒定的大小,在翻转过程中稍微裁剪翻转 View 的长边的角点。动画。

在手势识别器中设置layertransform属性时如何实现这种效果(我可能想调整我的opacity ,以获得 transitionFromView 实现的轻微调光效果)。我想我可以使用 CATransform3DMakeScale 并根据旋转角度和我的特定 m34 设置手动计算缩放函数,但在进行该练习之前,我我想确保我不会忽视一些更直观或更自然的方式来实现标准翻转动画所需的同步缩放和旋转。即使我必须手动计算缩放因子,我也希望获得关于如何将其定义为 m34 设置和角度函数的指导(我不是微妙之处的专家)向量变换)。

最佳答案

变换全部基于图层 anchor 。这就是您旋转的“枢轴点”。

anchorPoint 在 x 和 y 中使用从 0 到 1 的比例,默认为 0.5, 0.5

我相信您希望您的图层集的 anchor 如下所示:

viewToTransform.layer.anchorPoint = CGPointMake(0.5, 1);

这个问题的答案中有一些很好的信息和研究位置:

Changing my CALayer's anchorPoint moves the view

关于ios - 像UIViewAnimationOptionTransitionFlipFromRight一样使用CATransform3DRotate设置layer.transform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15844711/

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