使用Label作为子视图CATransform3D旋转

时间:2012-04-20 03:13:00

标签: ios catransform3d

我有一个关于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旋转标签的超级视图时,标签中的文本将被上下颠倒。所以我所做的是通过Pi / 2旋转超级视图,保持相同的持续时间并设置autoreverse = YES,它将做的是它将通过Pi / 2旋转超级视图,然后将其旋转回初始州。结果表明视图根本没有旋转,但是对于用户的视觉,它是旋转的。

1 个答案:

答案 0 :(得分:0)

我发现subLayers和视图子视图并不总能很好地响应双重动画(特别是alpha和中心变化)。如果必须(因为它比正常情况稍贵),请使用UIViewAnimationOptionAllowsAnimatedContent,这将强制重绘而不是动画的“快照”。