Swift UIImage не может быть анимирован гравитацией - PullRequest
0 голосов
/ 24 февраля 2020

Я изучил все в Google, и это немного. Действительно ли сообщество для Swift такое маленькое ???

У меня есть изображение, и при долгом нажатии я хочу, чтобы оно падало под действием силы тяжести и касалось нижней части экрана.

Я получаю ошибку:

Невозможно преобразовать значение типа 'UIView' в ожидаемый тип аргумента '[UIDynamicItem]'

Я пробовал UILabel, UIImage, UIImageView, Rect, UIView Я получаю эту ошибку, что когда-либо я делаю. Моя цель - использовать UIImage или UIImageView.


Этот код я использую для анимации:

    var animator: UIDynamicAnimator!
    var gravity: UIDynamicBehavior!
    var collision : UICollisionBehavior!

    var redBoxView: UIView?
    @IBOutlet weak var detailsImageWeather: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        animator = UIDynamicAnimator(referenceView: self.view)
        let imageTap = UILongPressGestureRecognizer(target: self, action: #selector(imageTapped))
        detailsImageWeather.addGestureRecognizer(imageTap)
    }

    @objc func imageTapped() {
        var frameRect = CGRect(x: 150, y: 20, width: 60, height: 60)
        redBoxView = UIView(frame: frameRect)
        redBoxView?.backgroundColor = UIColor.red
        self.view.addSubview(redBoxView!)

        let image = detailsImageWeather.image // This is what i want to use instead of redBoxView
        gravity = UIGravityBehavior(items: redBoxView!)
        animator.addBehavior(gravity)

        collision = UICollisionBehavior (items: redBoxView!)
        collision.translatesReferenceBoundsIntoBoundary = true
        animator.addBehavior(collision)

        let behavior = UIDynamicItemBehavior(items: [redBoxView!])
        behavior.elasticity = 2
    }

Что я делаю не так? не могу найти больше вещей, чтобы попробовать в Google

1 Ответ

1 голос
/ 14 апреля 2020

Ошибка говорит о том, что вам понадобится массив из UIDynamicItem (легко пропустить маленькие квадратные скобки). Но вы на самом деле настраиваете свои UIGravityBehavior и UICollisionBehavior с UIView ( redBoxView ) вместо [redBoxView]. Вот почему вы получаете сообщение об ошибке.


Вам необходимо изменить свои конфигурации на эту

gravity = UIGravityBehavior(items: [redBoxView!]) //redBoxView passed in an array

и эту

collision = UICollisionBehavior (items: [redBoxView!]) //redBoxView passed in an array
...