菜鸟教程小白 发表于 2022-12-13 07:29:25

ios - UIDynamicAnimator View 从引用范围之外进入


                                            <p><p>我想使用 <code>UIDynamicAnimator</code> 和重力/碰撞/弹性效果制作放置对象的动画。我查看了 Apple 的示例应用程序 <a href="https://developer.apple.com/library/ios/samplecode/DynamicsCatalog/Introduction/Intro.html" rel="noreferrer noopener nofollow">DynamicsCatalog</a> , 并且非常直接,除非对象从其容器边界之外开始。</p>

<p>例如,这是从示例应用的 <code>APLCollisionGravityViewController.m</code> 文件中获取的代码:</p>

<pre><code>UIDynamicAnimator *animator = [ initWithReferenceView:self.view];

UIGravityBehavior *gravityBeahvior = [ initWithItems:@];
;

UICollisionBehavior *collisionBehavior = [ initWithItems:@];
collisionBehavior.translatesReferenceBoundsIntoBoundary = YES;
collisionBehavior.collisionDelegate = self;
;
</code></pre>

<p>如果 <code>self.square</code> 的框架最初完全在 <code>self.view</code> 内,则效果很好。如果我将其更改为负 <code>frame.origin.y</code> 值,事情就会变得陌生。具体来说,如果 <code>frame.origin.y</code> 的绝对值超过 <code>frame.size.height</code> 的一半,则正方形似乎是“吸引”向上而不是向下 -它上升而不是下降。</p>

<p>我正在寻找最初完全在容器边界之外的正方形(即我设置 <code>frame.origin.y = -frame.size.height</code>),我该如何修改动画师/gravity/collision 行为来适应这种情况?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>问题是当对象试图<em>进入</em>引用 View 时,你撞到了顶部边界并导致了碰撞!物体从外部掉落并从您的引用 View 的<em>顶部</em>反弹。</p>

<p>所以你对碰撞边界的定义太简单了:</p>

<pre><code>collisionBehavior.translatesReferenceBoundsIntoBoundary = YES;
</code></pre>

<p>没有。您必须手动设置碰撞边界。例如,从只是引用 View 的<em>底部</em>的边界开始,以便对象可以进入场景并从地板反弹,如下所示:</p>

<pre><code>UICollisionBehavior* coll = ;
coll.collisionMode = UICollisionBehaviorModeBoundaries;
coll.collisionDelegate = self;
[coll addBoundaryWithIdentifier:@&#34;floor&#34;
                      fromPoint:CGPointMake(0,self.view.bounds.size.height)
                        toPoint:CGPointMake(self.view.bounds.size.width,
                                          self.view.bounds.size.height)];
</code></pre>

<p>如果您想在第一次碰撞之后<em></em> 更改为不同的封闭边界集,很好,但首先您必须让对象进入引用 View 。现在,您正在使用碰撞边界将其锁定。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - UIDynamicAnimatorView 从引用范围之外进入,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23252216/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23252216/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - UIDynamicAnimator View 从引用范围之外进入