2012-04-20 58 views
1

我有一个关于CATransform3D的问题。CATransform3D旋转,标签为子视图

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

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

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

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

非常感谢。

UPDATE

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

关键是animation.autoreverse,我们知道当您通过Pi旋转标签的超级视图时,标签中的文本将被上下颠倒。所以我做的是通过Pi/2旋转超级视图,保持相同的持续时间并设置autoreverse = YES,它将做的是它将旋转超级视图Pi/2,然后将其旋转回初始状态。结果证明视图不会被旋转,但是对于用户的视觉而言,它是旋转的。

回答

0

我发现子图层和视图的子视图并不总是对加倍的动画(特别是alpha和中心更改)做出反应。如果你必须(因为它比平常贵一点),使用UIViewAnimationOptionAllowsAnimatedContent,这将强制重绘,而不是动画的“快照”。

+0

我同意你的意见。但我想找到一种方法让他们工作。我会更新这个线程,如果我得到任何东西。谢谢你的帮助。 – Jason 2012-04-20 05:12:52

+0

听起来不错。 iOS中的动画很棘手,但是当你做对时,它确实很整洁。 – CodaFi 2012-04-20 05:20:53