问题标签 [uidynamicanimator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
384 浏览

ios - swift中的UIPushBehavior

我想在 Swift 中实现 UIPushBehavior,但我总是遇到以下错误:...查看项目 UIImageView 应该是 UIDynamicAnimator 中参考视图的后代...

我正在将视图添加到行为中,并将行为添加到动画师...

我还将动画师的referenceView设置为应该发生动作的gameView......

我希望你能帮助我弄清楚如何解决我的小问题......

0 投票
2 回答
96 浏览

ios - 滑块决定重力

到目前为止,我已经创建了一个从底部开始并使用 UiDynamicAnimator 向上移动的矩形。我希望用户确定负重力的“强度”。我希望用户通过滑块确定值。

到目前为止,这是我的代码:

我收到两个错误:

“‘value’的模糊使用”和“使用未解析的标识符‘sliderValue’”

如何将“sliderValue”转换为只有一位小数的浮点数?

0 投票
1 回答
200 浏览

ios - 用于将动态视图捕捉到屏幕顶部、底部或中间的 UIFieldBehaviour

我正在使用一个可拖动的视图,它是屏幕的宽度和高度,可以根据平移手势在屏幕上向上或向下移动。

当平移手势结束时,我希望它根据平移结束时视图的位置捕捉​​到屏幕的顶部、中间或底部三个不同的 y 位置。我想要类似 UIFieldBehaviour 的东西,其中有一种力量将其动画到正确的位置。

在顶部时将显示整个视图,而在底部时仅应显示 30px,其余视图将位于屏幕下方。因此,我需要强制仅对视图的顶部 30px 起作用。

力场行为(画得不好见谅):

在此处输入图像描述

捕捉行为:
在此处输入图像描述

关于如何实现这一目标的任何想法?

0 投票
1 回答
379 浏览

ios - UIDynamicAnimator、removeAllBehaviors() 第一次不起作用

我定义了 UIDynamicAnimator 属性:

self 是 UIView 的子类;

在 self 类的扩展中,同一个文件,我有动画逻辑,使用我的动画师,添加 UIDynamicBehavior 项目:

一切正常,但是当我尝试使用 removeAllBehaviors() 停止所有动画时,动画会停止,但行为仍然在 animator.behaviors 中。我第二次调用它时,数组变为空。

//======

对于我的 pushBehavior,我添加了动作,它改变了 var,表明我达到了目标点:

在 collisionBehavior 委托方法中,我检查此变量并尝试使用 removeAllBehaviors() 停止动画

0 投票
0 回答
85 浏览

autolayout - UISnapBehavior 动画故障

当使用 UISnapBehavior 将视图重置到屏幕中心时,我得到了预期的反弹效果。但是在滚动作为被捕捉视图的子视图的 UIScrollView 之后,UISnapBehavior 阻尼似乎有不同的基本计算。

我的快照行为是这样创建的:

在与作为识别器视图的子视图的滚动视图交互之前,snapBehavior 表现出非常夸张的反弹效果(这是所需和预期的行为),但在与滚动视图交互之后,然后再次触发 snapBehavior 效果更快(阻尼更少)尽管使用完全相同的阻尼常数。

我认为这与一些自动布局错误有关,因为滚动视图是使用自动布局定位的,并且它的内容大小是由自动布局约束动态计算的。

有趣的是,移除滚动视图会导致动态动画再次正确衰减。

0 投票
1 回答
643 浏览

ios - UIDynamicAnimator在swift 3中丢球循环

我有UIDynamicAnimator球从上往下掉,但有时掉 3 个球,有时掉 5 个……等等。

但我 to = 50在我的 for 循环中添加必须是 drop 50 球

哪里错了?

我的代码在下面。

0 投票
1 回答
75 浏览

ios - 使用 UIGravityBehavior 的子视图有不同的重力

我有一个带有一组子视图的 viewController。目前,它们的重力是相同的。我希望能够为每个子视图设置不同的重力方向值。有人可以告诉我怎么做吗?

提前致谢

编辑:目前在控制台中获取此输出“每个动画师的多重重力行为未定义,将来可能会断言”

0 投票
1 回答
98 浏览

ios - “启动”并放下一个 UIView

在此处输入图像描述

上图说明了我想要的:

  • 红圈是一个 UIView 的起点
  • 我想通过改变 X 位置向上启动它(Y 位置)
  • 我想让它落在界限内。

我尝试了什么:

对于启动,我可以使用 UIView.animate 函数。对于 drop,我可以使用 UIDynamicAnimator。但是也存在一些问题:

- 在 UIView.animate 我不能“弯曲”动画,只能是一条直线。我可以在这里使用这个答案来绘制曲线:https ://stackoverflow.com/a/43813458/7715250

- 结合这两个功能是行不通的。UIView.animate 完成后,UIView 直接向下下降。

UIDynamicAnimator 的代码:

这将使 UIView 具有很好的反弹效果。但是如何启动 UIView?如何更改 X 和 Y 位置并保持添加的行为?

0 投票
1 回答
457 浏览

ios - 如何暂停和恢复 UIDynamicAnimator 物理模拟

您将如何暂停和恢复 UIDynamicAnimator 的物理模拟?无法以编程方式暂停和恢复。当所有项目都处于静止状态时,会出现“暂停”状态,但我正在寻找不同的东西。例如,我想让一个项目被重力场拉动,然后按下暂停按钮暂停模拟,然后按下恢复按钮并恢复模拟,就好像什么都没发生一样。该项目保持其轨迹、速度等。

我的预感是我必须以某种方式保存项目的物理属性,删除动态行为,然后添加动态行为以模仿之前保存的物理属性。这是正确的方法吗?

0 投票
1 回答
109 浏览

ios - 向 UIDynamicAnimator 添加超过 32 个 UIFieldBehavior 会导致 SIGABRT

我有以下代码。当我迭代 25 次 (5 * 5) 时,它工作正常。当我迭代 36 次(for 循环中的 6 * 6)时,它会因 SIGABRT 而崩溃。我已经粘贴了错误的图像(Xcode 中的 Playgrounds 不允许我复制粘贴它)。这是一个内部错误,是否在某处定义了 32 个行为的限制,或者这是我的代码中的一个错误?谢谢! 在此处输入图像描述