我尝试使用自己的锚点以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
答案 0 :(得分:0)
我自己找到了解决方案,但是 我仍然不知道跳跃从何而来。
我没有通过CGAffineTransform.translatedBy或CATransform3DMakeTranslation进行翻译,而是改编了我的NSLayoutConstraint。
testViewAnchors[0].constant = testViewAnchors[0].constant + CGFloat(50)
在我的情况下,不需要为“翻译”制作动画,但是由于可以对NSLayoutConstraints进行动画处理,所以这不是问题。