【问题标题】:CATransform3D rotation with Label as subview以标签为子视图的 CATransform3D 旋转
【发布时间】:2012-04-20 03:13:00
【问题描述】:

我有一个关于 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,然后将其旋转回初始状态。结果证明视图根本没有旋转,但是对于用户的视觉来说,它是旋转的。

【问题讨论】:

    标签: ios catransform3d


    【解决方案1】:

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

    【讨论】:

    • 我同意你的看法。但我想找到一种方法让它们发挥作用。如果我得到任何东西,我会更新这个线程。感谢您的帮助。
    • 听起来不错。动画在 iOS 中很棘手,但如果你做得对,它真的很整洁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多