问题标签 [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.
swift - UIGravityBehavior 在移动项目后不起作用
当我启动我的应用程序时,我看到 UILabel 掉了下来,然后我将它向上移动并保持在那里。为什么不掉下来?如何在移动元素后制作 GravityBehavior?
swift - 在swift中,UIDynamicAnimation 需要很长时间才能暂停
我有一个 UIDynamicItems 相互交互的视图,但是我不希望它们在碰撞时变形,因此我将弹性设置为 0。但这不起作用,项目仍然被挤压和弹跳一小部分数量。当我尝试重置视图的形状时,dynamicAnimationDidPause()
但由于振动和弹跳需要太长时间。如何将它们设置为完全无弹性?我需要切换到不同的框架吗?
到目前为止我所做的
抱歉,我是编程新手,所以我不知道确切的术语。任何帮助表示赞赏,谢谢!
ios - 带有附件的 UIKit 动态行为平移不继续碰撞行为?
如何在 a 的盘上进行碰撞检测UIDynamicItem
?
背景:我从一组颜色/字符串中随机生成 20 个标签(这部分对问题来说不是必需的),然后将它们添加到具有随机中心位置的主视图中。从那里,我添加UIDynamicBehavior
s,如下所示:
1)UIDynamicItemBehavior
停止标签旋转 2)UISnapBehavior
将标签捕捉到视图的中心(我想要类似重力的运动,但同样,这不是这个问题) 3)UICollisionBehavior
对于collisionMode
is的所有标签.Items
。
这适用于“初始”设置......所有标签出现在随机点,然后在中心快速对齐,并进行适当的碰撞检测。不过,我的问题是,我怎样才能移动标签(通过平移手势)以继续进行碰撞检测?
我UIPanGestureRecognizer
在每个标签上都设置了一个,当它们开始拖动时,我创建一个UIAttachmentBehavior
并在拖动时使用它来移动它们。这在标签移动的意义上“有效”,但它只会滑过所有其他标签而不会发生任何碰撞检测。我怎样才能实现这种碰撞检测,以便当我开始将一个标签拖向其他标签时,它们会移开刚好足以没有重叠(然后这些标签会根据中心重心点迅速回到它们的位置) ? 我是否需要将UIAttachmentBehavior
所有其他标签附加到我为每个平底锅拖动的标签上?
我为我面临的问题创建了一个测试项目,它展示了我刚才描述的内容:
谢谢!
ios - UICollisionBehavior 仅与背景视图碰撞
在我的 ViewController 中,我有一个背景视图和一堆碰撞视图。我在这些碰撞视图中添加了重力行为,这样它们就会从原来的位置落下。但我想让这些视图在到达屏幕底部时停止下降。所以我为每个碰撞视图添加了碰撞行为。同时,我不希望它们相互碰撞。换句话说,每个碰撞视图都可以与其他碰撞视图重叠。我努力了
但它不起作用,我想我使用了错误的方法。那么我该如何实现呢?
ios - 如何暂停和恢复 UIDynamicAnimator 物理模拟
您将如何暂停和恢复 UIDynamicAnimator 的物理模拟?无法以编程方式暂停和恢复。当所有项目都处于静止状态时,会出现“暂停”状态,但我正在寻找不同的东西。例如,我想让一个项目被重力场拉动,然后按下暂停按钮暂停模拟,然后按下恢复按钮并恢复模拟,就好像什么都没发生一样。该项目保持其轨迹、速度等。
我的预感是我必须以某种方式保存项目的物理属性,删除动态行为,然后添加动态行为以模仿之前保存的物理属性。这是正确的方法吗?
ios - UIDynamicItemBehavior.density 不影响 UIFieldBehavior 中的对象物理?
我正在学习 UIDynamicAnimator(非常酷!)并建立了一个测试项目。我已经完成了工作,但在 UIFieldBehavior.linearGravityField(_:) 的物理特性中似乎没有考虑到我的对象的密度。
在 UIDynamicItemBehavior.density 的文档中它说:
动态项目的相对密度及其大小决定了它参与 UIKit 动态行为时的有效质量
以及 UIFieldBehavior.linearGravityField(_:) 的文档:
该场会产生一个定向引力,该引力均匀地应用于所有具有质量的动态项目。
和
给定物品上的力可以通过方程 F = ma 确定,其中力等于物品的质量乘以重力场施加的加速度,在这种类型的场中,重力场是恒定的。
所以我的理解是我赋予物品的密度应该会影响它们的物理特性。这不会发生 - 它们都以完全相同的速度下降:
这是我的代码。
主要风投:
还有我用来创建对象以获取所有物理的 Item 类:
在调试控制台中,我可以看到这些对象确实具有密度(分别为 0.1、100 和 10000),它似乎根本不影响事物:
我错过了什么或不理解什么?我需要一些明显的质量!
谢谢...
swift - 为什么调用 UIDynamicBehavior 的动作闭包后会出现内存泄漏/保留循环?
此处代码的想法是在视图 ( self.mv
) 已被UIDynamicAnimator
.
下面的代码基于Matt Neuburg编写的iOS 12 编程一书的第 4 章中的示例。作者说行为和视图(self.mv
在代码中)都不会被释放。但他没有详细说明这一点。
我的问题是:
谁还保留着之后的行为
self.anim.removeAllBehaviors()
?谁还留着
self.mv
?
我使用了 Instruments,但我不太了解输出。这是否意味着动画师保留了它?但是只有绿色的复选标记。
使用 XCode 中的“调试内存图”工具,我看到UIGravityBehavior
即使在self.anim.removeAllBehaviors()
被调用后仍然被动画师保留。