1

我有一个关于 CATransform3D 的问题。

我有一个视图A,其中包含一个标签B。B的图层位置是A的中心。B用于显示通知消息。我想将A旋转180度,当然B中的文字会颠倒。所以我也必须将 B 旋转 180 度。一切看起来都很简单,实际上在模拟器中它工作正常。

但是当我在设备上加载时,A 和 B 确实旋转了,但是 B 的位置发生了变化。现在我只能看到 B 的一半,另一半不在 A 中。

我的猜测是,当旋转 A 时,因为 B 与 A 的坐标系相关,它被翻转了 180 度,所以 B 的位置发生了变化。

但我想知道是否有人知道如何解决这个问题,或者你们是否有更好的方法来解决。

非常感谢。

更新

我仍然无法弄清楚为什么 B 的位置会移动,但我想出了另一种方法来实现相同的动画。有点棘手。

关键是animation.autoreverse,我们知道当你用 Pi 旋转 label 的 super view 时,label 中的文字会被倒置旋转。所以我所做的是将超级视图旋转 Pi/2,保持相同的 duration 和 set autoreverse = YES,它将做的是它将超级视图旋转 Pi/2,然后将其旋转回初始状态。结果证明视图根本没有旋转,但是对于用户的视觉来说,它是旋转的。

4

1 回答 1

0

我发现视图的 subLayers 和 subviews 并不总是对加倍动画(尤其是 alpha 和 center 变化)反应良好。如果你必须(因为它比平常贵一点),请使用 UIViewAnimationOptionAllowsAnimatedContent,这将强制重绘而不是动画的“快照”。

于 2012-04-20T04:07:30.037 回答