问题标签 [uidynamicbehavior]

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 投票
1 回答
136 浏览

swift - UIGravityBehavior 在移动项目后不起作用

当我启动我的应用程序时,我看到 UILabel 掉了下来,然后我将它向上移动并保持在那里。为什么不掉下来?如何在移动元素后制作 GravityBehavior?

0 投票
1 回答
501 浏览

ios - 使用 UIDynamicBehavior 向 UIView Pan 添加惯性

我正在尝试使用 UIPanGestureRecognizer 平移“blockView”。当平移“结束”时,希望“blockView”以惯性减速,就像 UIScrollView 将以惯性结束滚动一样。

在此处输入图像描述

问题: 当我平移视图时,'blockView' 尝试捕捉到平移起源的原点。当平移“结束”时,它会产生惯性,但它从平移的原点开始(在捕捉到平移原点之后)。

注意: 上面的代码可以正常工作,只是为了 PAN THE VIEW。

0 投票
0 回答
113 浏览

swift - 在swift中,UIDynamicAnimation 需要很长时间才能暂停

我有一个 UIDynamicItems 相互交互的视图,但是我不希望它们在碰撞时变形,因此我将弹性设置为 0。但这不起作用,项目仍然被挤压和弹跳一小部分数量。当我尝试重置视图的形状时,dynamicAnimationDidPause()但由于振动和弹跳需要太长时间。如何将它们设置为完全无弹性?我需要切换到不同的框架吗?

到目前为止我所做的

抱歉,我是编程新手,所以我不知道确切的术语。任何帮助表示赞赏,谢谢!

0 投票
1 回答
339 浏览

ios - 带有附件的 UIKit 动态行为平移不继续碰撞行为?

如何在 a 的盘上进行碰撞检测UIDynamicItem

背景:我从一组颜色/字符串中随机生成 20 个标签(这部分对问题来说不是必需的),然后将它们添加到具有随机中心位置的主视图中。从那里,我添加UIDynamicBehaviors,如下所示:

1)UIDynamicItemBehavior停止标签旋转 2)UISnapBehavior将标签捕捉到视图的中心(我想要类似重力的运动,但同样,这不是这个问题) 3)UICollisionBehavior对于collisionModeis的所有标签.Items

这适用于“初始”设置......所有标签出现在随机点,然后在中心快速对齐,并进行适当的碰撞检测。不过,我的问题是,我怎样才能移动标签(通过平移手势)以继续进行碰撞检测?

UIPanGestureRecognizer在每个标签上都设置了一个,当它们开始拖动时,我创建一个UIAttachmentBehavior并在拖动时使用它来移动它们。这在标签移动的意义上“有效”,但它只会滑过所有其他标签而不会发生任何碰撞检测。我怎样才能实现这种碰撞检测,以便当我开始将一个标签拖向其他标签时,它们会移开刚好足以没有重叠(然后这些标签会根据中心重心点迅速回到它们的位置) ? 我是否需要将UIAttachmentBehavior所有其他标签附加到我为每个平底锅拖动的标签上?

我为我面临的问题创建了一个测试项目,它展示了我刚才描述的内容:

github测试项目

谢谢!

0 投票
1 回答
200 浏览

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

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

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

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

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

在此处输入图像描述

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

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

0 投票
0 回答
85 浏览

ios - 热图的 UIDynamics

对于客户,我需要意识到UIView应该类似于这个:

成为屏幕

我的想法是使用UIDynamics和某种UIFieldBehaviour. 所以我创建了一个容器视图containerView,添加了一堆UIViews。这些内部视图被添加到一个UIFieldBehavior.magneticField()(使用 addItem)。

我还创建了一个UICollisionBehaviour添加相同UIView的 s

下面是代码:

这就是我得到的:

我得到了什么

黄色视图是在referenceView初始化动画对象时传递的容器视图 ( self.pointsReceivedMap)

0 投票
0 回答
46 浏览

ios - UICollisionBehavior 仅与背景视图碰撞

在我的 ViewController 中,我有一个背景视图和一堆碰撞视图。我在这些碰撞视图中添加了重力行为,这样它们就会从原来的位置落下。但我想让这些视图在到达屏幕底部时停止下降。所以我为每个碰撞视图添加了碰撞行为。同时,我不希望它们相互碰撞。换句话说,每个碰撞视图都可以与其他碰撞视图重叠。我努力了

但它不起作用,我想我使用了错误的方法。那么我该如何实现呢?

0 投票
1 回答
457 浏览

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

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

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

0 投票
0 回答
139 浏览

ios - UIDynamicItemBehavior.density 不影响 UIFieldBehavior 中的对象物理?

我正在学习 UIDynamicAnimator(非常酷!)并建立了一个测试项目。我已经完成了工作,但在 UIFieldBehavior.linearGravityField(_:) 的物理特性中似乎没有考虑到我的对象的密度。

在 UIDynamicItemBehavior.density 的文档中它说:

动态项目的相对密度及其大小决定了它参与 UIKit 动态行为时的有效质量

以及 UIFieldBehavior.linearGravityField(_:) 的文档:

该场会产生一个定向引力,该引力均匀地应用于所有具有质量的动态项目。

给定物品上的力可以通过方程 F = ma 确定,其中力等于物品的质量乘以重力场施加的加速度,在这种类型的场中,重力场是恒定的。

所以我的理解是我赋予物品的密度应该会影响它们的物理特性。这不会发生 - 它们都以完全相同的速度下降:

密度租金

这是我的代码。

主要风投:

还有我用来创建对象以获取所有物理的 Item 类:

在调试控制台中,我可以看到这些对象确实具有密度(分别为 0.1、100 和 10000),它似乎根本不影响事物:

我错过了什么或不理解什么?我需要一些明显的质量!

谢谢...

0 投票
2 回答
538 浏览

swift - 为什么调用 UIDynamicBehavior 的动作闭包后会出现内存泄漏/保留循环?

此处代码的想法是在视图 ( self.mv) 已被UIDynamicAnimator.

下面的代码基于Matt Neuburg编写的iOS 12 编程一书的第 4 章中的示例。作者说行为和视图(self.mv在代码中)都不会被释放。但他没有详细说明这一点。

我的问题是:

  1. 谁还保留着之后的行为self.anim.removeAllBehaviors()

  2. 谁还留着self.mv

我使用了 Instruments,但我不太了解输出。这是否意味着动画师保留了它?但是只有绿色的复选标记。

仪器屏幕截图

使用 XCode 中的“调试内存图”工具,我看到UIGravityBehavior即使在self.anim.removeAllBehaviors()被调用后仍然被动画师保留。

调试内存图