Добавление инерции в кастрюлю UIView с UIDynamicBehavior

Я пытаюсь панорамировать 'blockView' с помощью UIPanGestureRecognizer. Когда панорамирование 'Завершено', нужно, чтобы blockView замедлялся с инерцией, так же как UIScrollView заканчивал бы прокрутку с инерцией.

override func viewDidLoad() {
    super.viewDidLoad()
    self.dynamicAnimator = UIDynamicAnimator(referenceView: self.view)

    let collider = UICollisionBehavior(items: [self.magnifiedView!])
    collider.collisionDelegate = self
    collider.collisionMode = .Boundaries
    collider.translatesReferenceBoundsIntoBoundary = true
    self.dynamicAnimator.addBehavior(collider)

    self.dynamicProperties = UIDynamicItemBehavior(items: [self.magnifiedView!])
    //self.dynamicProperties.elasticity = 1.0
    //self.dynamicProperties.friction = 0.0
    self.dynamicProperties.allowsRotation = false
    //self.dynamicProperties.resistance = 10.0
    self.dynamicAnimator.addBehavior(self.dynamicProperties)

}


func panBlockView (panGesture: UIPanGestureRecognizer) {
    switch panGesture {
    case .Began:
        self.blockViewLocation = (self.blockView.center)!
    case .Changed:
        let translation = panGesture.translationInView(self.view)
        self.blockView.center = CGPointMake(self.blockViewLocation.x + translation.x, self.self.blockViewLocation.y + translation.y)
    case .Ended, .Cancelled:
        self.dynamicAnimator.addLinearVelocity(panGesture.velocityInView(self.view), forItem: self.blockView)
    }
}

Проблема: при панорамировании представления "blockView" пытается привязаться к источнику, из которого был создан панорамирование. Когда кастрюля "заканчивается", она создает инерцию, но начинается с ее начала (после привязки к началу кастрюли).

ПРИМЕЧАНИЕ. Приведенный выше код работает без проблем, только для панорамирования.

1 ответ

Решение

Добавление привязки Поведение и ее привязка решают проблему.

Другие вопросы по тегам