我目前正在为Apple Development类的动画项目工作,我们正在其中移动ImageView并为其设置动画。我可以移动图像,但是我对如何将其返回到原始位置感到困惑,最好使用相同的按钮。移动动画的代码如下:
@IBAction func move(_ sender: Any) {
UIView.animate(withDuration: 1, animations: {self.imageView.frame.origin.y -= 200
}, completion: nil)
}
注意:如果您有imageView约束的出口,请在动画而非帧期间更新约束值。
1)首先创建变量
var isBack : Bool = false
现在进行按钮操作:
@IBAction func move(_ sender: Any) {
if isBack == false
{
isBack = true
UIView.animate(withDuration: 1, animations: {self.imageView.frame.origin.y -= 200
}, completion: nil)
}
else
{
isBack = false
UIView.animate(withDuration: 1, animations: {self.imageView.frame.origin.y += 200
}, completion: nil)
}
}
声明一个变量,该变量将在加载视图时保存y原点的值。并声明一个变量,该变量将检查imageview当前是否在设置动画。
var onLoadFrameYOrigin : CGFloat = 0.0
var isAnimating : Bool = false
override func viewDidLoad() {
super.viewDidLoad()
onLoadFrameYOrigin = self.searchView.frame.origin.y
}
@IBAction func move(_ sender: Any) {
if !isAnimating {
self.isAnimating = true
UIView.animate(withDuration: 1.0, animations: {
if self.onLoadFrameYOrigin == self.imageView.frame.origin.y {
self.imageView.frame.origin.y -= 200
} else {
self.imageView.frame.origin.y = onLoadFrameYOrigin
}
}) { _ in
self.isAnimating = false
}
}
}