我制作了一个加载旋转动画,它将视图从中间向外推,然后围绕中心视图旋转回到它的原始位置。这就是我试图实现的:
内部箭头将视图从中心移开。我已经做到了这一点,我所坚持的部分是围绕中心视图旋转视图。我读过许多其他的StackOverflow帖子,但还没有接近实现这一点。
目前代码:
UIView.animate(withDuration: 0.5) {
self.topView.transform = CGAffineTransform(translationX: 20, y: -20)
} completion: { _ in
self.topView.setAnchorPoint(self.centerView.center)
// Rotate
}
}
下面是我如何设置视图的锚点。我使用这个方法是因为在设置锚点时视图会消失。
func setAnchorPoint(_ point: CGPoint) {
var newPoint = CGPoint(x: bounds.size.width * point.x, y: bounds.size.height * point.y)
var oldPoint = CGPoint(x: bounds.size.width * layer.anchorPoint.x, y: bounds.size.height * layer.anchorPoint.y);
newPoint = newPoint.applying(transform)
oldPoint = oldPoint.applying(transform)
var position = layer.position
position.x -= oldPoint.x
position.x += newPoint.x
position.y -= oldPoint.y
position.y += newPoint.y
layer.position = position
layer.anchorPoint = point
}
一旦完整的360旋转完成,我需要将视图移回中心,完成动画。
1条答案
按热度按时间lfapxunr1#
对于加载视图围绕圆形视图旋转的部分,可以使用UIBezierPath,并根据其路径创建一个CAKeyframeAnimation,看看这个实现,希望能有所帮助。