Как мне анимировать UIImageView, который был создан программно при нажатии кнопки? (Каждое нажатие кнопки создает новый UIImageView с тем же изображением) - PullRequest
0 голосов
/ 05 августа 2020

У меня есть код, который создает новый UIImageView каждый раз, когда нажимается кнопка, и этот UIImageView затем анимируется. Однако всякий раз, когда кнопка нажимается после ее первого нажатия, я думаю, что анимация, примененная ко второму созданному UIImageView, влияет на первый UIImageView. Другими словами, оба начинают двигаться очень быстро (намного быстрее, чем запрограммировано). Это мой код:

@IBAction func buttonClicked(_ sender: Any) {
var imageName: String = "ImageName"
var image = UIImage(named: imageName)
var imageView = UIImageView(image: image!)
imageView.frame = CGRect(x: 0,y: 0,width: 50,height: 50)
view.addSubView(imageView)
moveIt(imageView)
}

func moveIt(_ imageView: UIImageView) {
UIView.animate(withDuration:TimeInterval(0.00001), delay: 0.0, options: .curveLinear, animations: {
imageView.center.x+=3
}, completion: {(_) in self.moveIt(imageView)
})
}

Я относительно новичок в коде и Swift. Заранее спасибо, потому что я не могу понять этого.

1 Ответ

0 голосов
/ 05 августа 2020

Вы не должны пытаться делать целую кучу связанных анимаций каждые 0,00001 секунды. Большинство вещей на iOS имеют временное разрешение ≈ 0,02 секунды.

Вы пытаетесь запускать анимацию каждые 10 микросекунд и перемещать изображение на 10 пунктов за каждый шаг. Это приводит к анимации миллиона точек в секунду. Не делайте этого .

Просто создайте единственную анимацию, которая перемещает представление изображения в конечный пункт назначения в течение желаемого промежутка времени. Система позаботится о настройке анимации за вас. (Допустим, вы перемещаете его на 100 пикселей за 0,3 секунды. Просто укажите продолжительность 0,3 секунды, и тело анимации переместит изображение на 100 пикселей. Вот вам go. Это просто сработает.

Обратите внимание, что ваши представления изображений не имеют ограничений автоматической компоновки, поэтому они, вероятно, будут вести себя странно после завершения анимации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...