我读过很多关于这个主题的问题,但是他们已经过时了,或者我无法理解它们。这是动画:
UIView.animate(withDuration: 20, delay: 0, options: [.curveLinear], animations: {
self.SubmarineImageView.transform = CGAffineTransform(translationX: (-self.frame.width - 80), y: CGFloat(Int(arc4random_uniform(UInt32(self.size.height / 2)))))
})
如何在动画期间访问SubmarineImageView的位置?
此外,这些图像显示发射器无法更新,因为位置不会改变
答案 0 :(得分:1)
要在动画期间访问SubmarineImageView属性,您可以查看它presentationLayer。它可以返回零,所以你必须先打开它。要在动画期间获得位置,您可以:
if let presentation = self.submarineImageView.layer.presentation() {
return presentation.position
} else {
return self.submarineImageView.layer.position
}
另外,我有点担心你试图简单地将这个值分配给发射器的位置。这不会起作用,因为表示层的位置在动画期间正在改变。如果您尝试使用潜水艇进行动画制作,则还应修改动画块中发射器的位置,或将发射器添加为submarineImageView
的子图层。