Я искал в Интернете, но ничто не могло ответить на мой вопрос.
Я пытаюсь анимировать UIImageview вне экрана, установить его альфа в 0, сбросить его положение и сбросить альфа в 1 снова.Я не могу найти правильную позицию для анимации изображения.
Я установил распознаватель жестов, чтобы перетаскивать изображение, и когда центр изображения находится над определенной точкой, я хочу анимировать его вне экрана.
Это Regocnizercode:
@objc func imageDragged(gestureRecognizer: UIPanGestureRecognizer){
//Current Point where the label is dragged
let draggedLabelPoint = gestureRecognizer.translation(in: view)
//Updating the center of the label : viewcenter +/- currentpoint
matchImageView.center = CGPoint(x: view.bounds.width/2 + draggedLabelPoint.x, y: view.bounds.height/2 + draggedLabelPoint.y)
let xFromCenter = view.bounds.width/2 - matchImageView.center.x
var rotation = CGAffineTransform(rotationAngle: xFromCenter / -500)
let scale = min(100/abs(xFromCenter),1)
var scaledAndRotated = rotation.scaledBy(x: scale, y: scale)
//Transforming the Item respective to the distance from center
matchImageView.transform = scaledAndRotated
if gestureRecognizer.state == .ended {
if matchImageView.center.x < (view.bounds.width/2 - 100) {
animateImageToSide(target: CGPoint(x: view.bounds.width - 200, y: matchImageView.center.y))
matchImageView.alpha = 0
}
if matchImageView.center.x > (view.bounds.width/2 + 100) {
animateImageToSide(target: CGPoint(x: view.bounds.width + 200, y: matchImageView.center.y))
matchImageView.alpha = 0
}
//Reset the scaling variables and recentering the Item after swipe
rotation = CGAffineTransform(rotationAngle: 0)
scaledAndRotated = rotation.scaledBy(x: 1, y: 1)
matchImageView.transform = scaledAndRotated
matchImageView.center = CGPoint(x: view.bounds.width/2, y: view.bounds.height/2)
}
}
Извините, если часть сброса не имеет значения для вас, но я не уверен, может ли это вызвать такое поведение.
Иэто мой текущий метод анимации:
func animateImageToSide(target:CGPoint){
UIImageView.animate(withDuration: 0.5, delay: 0, options: .curveLinear, animations: {self.matchImageView.center = target}) { (success: Bool) in
self.updateImage()
self.fadeInImage()//This is where i set the alpha back to 1
}
}
Я не уверен, что мне нужно использовать CGPoint.
Текущее поведение изображения очень странное.Большую часть времени он привязывается к определенному месту, независимо от целевого положения.Возможно, моя попытка сделать это совершенно неверна.
Спасибо за вашу помощь!