无法访问UIImageView的当前位置

时间:2017-10-15 17:32:22

标签: swift animation uiimageview

我读过很多关于这个主题的问题,但是他们已经过时了,或者我无法理解它们。这是动画:

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的位置?

此外,这些图像显示发射器无法更新,因为位置不会改变

Image 1

Image 2

1 个答案:

答案 0 :(得分:1)

要在动画期间访问SubmarineImageView属性,您可以查看它presentationLayer。它可以返回零,所以你必须先打开它。要在动画期间获得位置,您可以:

if let presentation = self.submarineImageView.layer.presentation() {
    return presentation.position
} else {
    return self.submarineImageView.layer.position
}

另外,我有点担心你试图简单地将这个值分配给发射器的位置。这不会起作用,因为表示层的位置在动画期间正在改变。如果您尝试使用潜水艇进行动画制作,则还应修改动画块中发射器的位置,或将发射器添加为submarineImageView的子图层。