【问题标题】:iOS: jumping uiview when rotating via CATransform3DRotateiOS:通过 CATransform3DRotate 旋转时跳转 uiview
【发布时间】:2018-07-17 15:22:50
【问题描述】:

我尝试使用自己的锚点以 90 度角旋转 uiview(高度和宽度为 100)。更改锚点后,我翻译我的视图,以便两个更改相互抵消。

当我使用 (Double.pi) 旋转视图时,它会按预期设置动画,但是当我更改为 (Double.pi/2) 时,视图会向上跳跃。

    testView.layer.anchorPoint = CGPoint(x: 0.5, y: 1)
    testView.layer.transform = CATransform3DMakeTranslation(0, -50, 0)

    UIView.animate(withDuration: 2.3, delay: 0, options: .curveLinear, animations: { () -> Void in
        var allTransofrom = self.testView.layer.transform
        var c3d = CATransform3DIdentity
        c3d.m34 = 2.5 / (2000)
        let rot = CATransform3DRotate(c3d, CGFloat(Double.pi/2), 1, 0, 0)
        allTransofrom = CATransform3DConcat(allTransofrom, rot)
        self.testView.layer.transform = allTransofrom
    }, completion: {(finished) in
    } )

完整代码here

【问题讨论】:

    标签: ios swift uiview catransform3d


    【解决方案1】:

    我自己找到了解决方案,但是 我仍然不知道跳跃是从哪里来的。

    我没有通过 CGAffineTransform.translatedBy 或 CATransform3DMakeTranslation 进行翻译,而是简单地调整了我的 NSLayoutConstraint。

    testViewAnchors[0].constant = testViewAnchors[0].constant + CGFloat(50)
    

    在我的情况下,“翻译”的动画不是必需的,但可以为 NSLayoutConstraints 设置动画,这应该不是问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多