Странное поведение свойства offsetFromCenter объекта UIAttachmentBehavior

Я изучал книгу Мэтта Нойбурга ios 13 "Погрузитесь в подробности" и наткнулся на пример "dragByAttachment". Вот:

        @IBAction func dragging(_ p: UIPanGestureRecognizer) {
    switch p.state {
    case .began:
        self.anim = UIDynamicAnimator(referenceView:self.view)
        self.anim.perform(Selector(("setDebugEnabled:")), with:true)
        self.anim.delegate = self
        let loc = p.location(ofTouch:0, in:p.view)
        let cen = p.view!.bounds.center
    
        
        let anchor = p.location(ofTouch:0, in:self.view)
        let att = UIAttachmentBehavior(item:p.view!,
                                       offsetFromCenter:UIOffset(horizontal: loc.x - cen.x  , vertical:loc.y - cen.y), attachedToAnchor:anchor)
        self.anim.addBehavior(att)
        let b = UIFieldBehavior.linearGravityField(direction:CGVector(0,1))
        b.addItem(p.view!)
        b.strength = 0.4
        b.direction = CGVector(dx: 0, dy: 1)
   
        self.anim.addBehavior(b)
        self.att = att
    case .changed:
       // print()
        self.att.anchorPoint = p.location(ofTouch:0, in: self.view)
    default:
        print("done")
        self.anim = nil
    }
}

Эта строчка меня сильно смутила:

        let att = UIAttachmentBehavior(item:p.view!,
                                       offsetFromCenter:UIOffset(horizontal: loc.x - cen.x  , vertical:loc.y - cen.y))

потому что только в случае offsetFromCenter было равно UIOffset(horizontal: loc.x - cen.x, vertical:loc.y - cen.y), это свойство (offsetFromCenter) не выполняло то, что Apple doc говорил нам о задании offsetFromCenter. Вот результат gif, который я прикрепил:

Нет смещения от центральной точки видов (черный ящик). И неважно, с какой точки мы будем проводить эксперимент.

но если мы изменим свойство offsetFromCenter с предыдущего UIOffset (по горизонтали: loc.x - cen.x, vertical: loc.y - cen.y) на новое UIOffset (по горизонтали: loc.x - cen.x - 20, по вертикали:loc.y - cen.y - 20) это измененное свойство вносит коррективы в UIAttachmentBehavior в соответствии с документацией Apple, как и должно. я прикрепил гифку

Почему в первом примере это так странно?

0 ответов

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