Я пытался сделать хорошую анимацию пружины / поселения с помощью UIDynamics, поэтому я подумал: «О, мне нужна привязка, чтобы получить ее в нужном положении, и приложение для пружинистого / поселения, когда оно приходит в покой». Нечто подобное можно увидеть в видео WWD C 2015 года:
WWD C 2015
Что нового в UIKit Dynamics и Визуальные эффекты (21:40)
https://developer.apple.com/videos/play/wwdc2015/229
Докладчик ссылается на привязку и составное поведение с 4 насадками, настроенными как пружины. Я совершенно не понимаю, почему вам понадобится 4 упругих насадки для выполнения sh этого.
Однако в моих экспериментах, когда я комбинирую и UISnapBehavior
, и UIAttachmentBehavior
, это выглядит как UIAttachmentBehavior
игнорируется (частота и демпфирование) и только UISnapBehavior
влияет на вещи.
Я могу полностью удалить UISnapBehavior
и получить эффект пружины / стабилизации только с UIAttachmentBehavior
с длиной от 0 до anchorPoint . Что заставляет меня думать, что UISnapBehavior
может быть просто оболочкой более высокого уровня вокруг UIAttachmentBehavior
с длиной 0?
Примерно так:
attachmentBehavior = UIAttachmentBehavior(item: item, attachedToAnchor: CGPoint.zero)
attachmentBehavior.frequency = 3.0
attachmentBehavior.damping = 0.3
attachmentBehavior.length = 0
itemBehavior = UIDynamicItemBehavior(items: [item])
itemBehavior.density = 0.01
itemBehavior.resistance = 10
itemBehavior.friction = 0.0
itemBehavior.allowsRotation = false
...
func snap(to position: CGPoint){
attachmentBehavior.anchorPoint = CGPoint(x: position.x, y: position.y)
}