我可以使用Swift在iOS中绕Y轴旋转一个对象,但如何使多个对象绕单一轴旋转?

3
我已经创建了这个函数,它可以使一个对象(imageViewLogo)绕Y轴旋转。
问题是,如何使多个对象围绕特定点旋转?

enter image description here

例如,正方形围绕蓝色轴旋转。
func animate()
{
    var id = CATransform3DIdentity
    id.m34 =  -1.0 / 1000

    var transformAnim            = CAKeyframeAnimation(keyPath:"transform")
    transformAnim.values         = [
        NSValue(CATransform3D: CATransform3DRotate(id, 0 * CGFloat(-M_PI_2), 0, 1.0, 0)),
        NSValue(CATransform3D: CATransform3DRotate(id, 1 * CGFloat(-M_PI_2), 0, 1.0, 0)),
        NSValue(CATransform3D: CATransform3DRotate(id, 0 * CGFloat(-M_PI_2), 0, 1.0, 0))
    ]
    transformAnim.keyTimes       = [0, 0.5, 1.0]
    transformAnim.duration       = 0.7

    self.imageViewLogo.layoutIfNeeded()

    self.imageViewLogo.layer.addAnimation(transformAnim, forKey: "transform")
}

2
@DeBanana,不行。在 iOS 中,所有的 UI 代码都需要在主线程上运行。 - Duncan C
1个回答

4
最简单的做法是将您想要旋转的所有视图放入另一个视图中,然后旋转该父视图。(也可以通过将多个图层放置在另一层内并旋转包含层来完成相同的操作,但这需要更多的工作。)

1
谢谢,这是一个简单的解决方案。请告诉我如何使其不(双面),这样我就可以将其标记为最佳答案了。当我旋转某些东西时,我不希望出现另一面。 - DeyaEldeen
抱歉,您不能这样做。如果您围绕Y轴旋转某物体,当旋转角度达到90/-90度时,底部会暴露出来。您说您不想让另一面出现。那么您希望发生什么呢? - Duncan C
1
如果你曾经使用过像3D Max这样的三维软件包,那么你会知道有一个叫做“强制双面”的选项,它可以让四边形(例如)从两个方向都可见。当“强制双面”关闭时,只能从一个方向看到它,而另一个方向则不可见。目前类似于“强制双面”的功能是开启状态,我想将其关闭。 - DeyaEldeen
1
除了空白之外,我想展示一个文本框和两个按钮。 - DeyaEldeen
1
你还没有回答我的问题。 - Duncan C
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接