如何解决UIAttachmentBehavior的“ offsetFromCenter”属性的奇怪行为
我正在学习Matt Neuburg的书ios 13 dive,深入了解并偶然发现了示例“ 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!,vertical:loc.y - cen.y))
因为仅在offsetFromCenter等于UIOffset(水平:loc.x-cen.x,垂直:loc.y-cen.y)的情况下,该属性(offsetFromCenter)没有像苹果医生所说的那样offsetFromCenter作业。这是我附上的gif结果:
从视图(黑盒)的中心点没有偏移。从什么角度进行实验都没有关系。
但是如果我们将offsetFromCenter属性从以前的UIOffset(水平:loc.x-cen.x,垂直:loc.y-cen.y)更改为新的UIOffset(水平:loc.x-cen.x-20, vertical:loc.y-cen.y-20)此修改后的属性会根据Apple的文档对UIAttachmentBehavior进行调整。我附上gif
为什么在第一个示例中它表现出这种奇怪的方式?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。