Перемещение изображения в оригинал - PullRequest
0 голосов
/ 25 января 2020

В настоящее время я работаю над анимационным проектом для класса Apple Development, в котором мы перемещаем и анимируем ImageView. Я могу переместить изображение, но я нахожусь в тупике о том, как вернуть его в исходное местоположение, желательно с помощью той же кнопки. Код для анимации движения выглядит следующим образом:

@IBAction func move(_ sender: Any) {

    UIView.animate(withDuration: 1, animations: {self.imageView.frame.origin.y -= 200
    }, completion: nil)

}

Ответы [ 2 ]

1 голос
/ 25 января 2020

объявляет переменную, которая будет содержать значение вашего источника y при загрузке представления. а также объявить переменную, которая будет проверять, анимируется ли в данный момент просмотр изображения.

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
        }
    }
}
0 голосов
/ 25 января 2020

Примечание: если у вас есть выход ограничения 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)
   }

}
...