问题标签 [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 回答
673 浏览

objective-c - iOS 使用 UIDynamicAnimator 进行视图控制器转换时如何计算转换持续时间?

我正在修改这个使用动态动画器进行视图控制器转换的示例。我想做的一件事是让它在 iPad 上工作,并改变重力从上到下到右到左的过渡方向。如果有一种方法可以让我根据视图大小、施加的力和重力方向来计算视图转换的时间,我很感兴趣?换句话说,视图到达右边界并停止反弹需要多长时间。

我想从以下位置返回这个正确的持续时间:

我正在使用的示例将推送幅度设置为 100,这适用于 iPhone 屏幕,但对于 iPad 屏幕来说“太慢”。据我了解,力会施加到屏幕尺寸上,iPad 屏幕需要更强的推动力才能及时移动。

所以我修改了代码如下:

哪个有效,但现在我不知道新的过渡需要多长时间。默认值是 1.5 秒,这是可行的,但如果我将其设置为 0.7 秒,视图会在过渡过程中卡住。

0 投票
2 回答
1455 浏览

ios7 - iOS7 how to understand UIPushBehavior magnitude in UIPushBehaviorModeInstantaneous mode?

I'm looking at Apple documentation for UIPushBehavior and it confuses me in instantaneous mode. I know that the acceleration formula is Force = Mass * acceleration. I assume that mass of a view is width*height*density(1). The documentation describes push magnitude as follows:

The default magnitude is nil, equivalent to no force. A continuous force vector with a magnitude of 1.0, applied to a 100 point x 100 point view whose density value is 1.0, results in view acceleration of 100 points / second² in the direction indicated by the angle or pushDirection property.

This makes sense in terms of continuous pushing, where it provides constant acceleration. It does not say anything about intantaneous push. How can I understand what velocity an instantaneous push of magnitude 1 will provide to a 100x100 view?

0 投票
1 回答
671 浏览

ios - 减慢 UIDynamicAnimator 的动画

我想减慢我的 UIDynamicAnimator 生成的动画,以便我可以微调我的 UIDynamicBehaviors。

在 ios 模拟器中,Debug 菜单下有一个菜单选项,标签为“Toggle slow animations in frontmost app”。

但是,这个选项似乎对 UIDynamicAnimator 生成的动画没有影响。还有其他方法可以实现我的目标吗?

0 投票
0 回答
455 浏览

ios - 我们可以将重力行为应用到屏幕中心吗?

我正在使用 uidynamicbehavior (UIGravityBehavior) 。我玩了gravityDirection,但不能让它集中在屏幕的中心。

有什么办法可以使重力集中在屏幕的中心。

基本上我想要的是显示我的视图(圆圈)收敛到屏幕的中心,即使我将它们分开。

任何建议都会有很大帮助。

编辑:添加代码

我们可以给重力方向沿线移动,如果我们想设置重力作用在屏幕的中心怎么办。即,如果来自任何地方的物体被吸引到屏幕的中心,就好像屏幕的中心就像重力的原点一样。:)

0 投票
0 回答
484 浏览

ios - iOS 控制中心中的 UIKit 动态

我只是想模仿 iOS 控制中心的动画行为。

我正在尝试在 UI 元素中实现 UIKit Dynamics。它是一个位于屏幕下半部分的面板,我希望它像 iOS 控制中心一样通过平移手势向上滑动并通过弹跳捕捉。还希望它像在控制中心一样紧急恢复。

我成功地附加了一个 UIPanGesterRecognizer 并启动了这些:

  • UIGravityBehavior
  • UICollisionBehavior
  • UIPushBehavior
  • UIAttachmentBehavior
  • UISnapBehavior

在尝试了所有这些之后,我还没有成功地抓住控制中心的行为。

苹果有没有谈论他们是如何在某个地方实现它的?在示例代码或 WWDC 视频中?

0 投票
1 回答
468 浏览

ios - UIDynamicAnimator 停止对重力变化做出反应

我遇到了与https://stackoverflow.com/questions/28275004/uidynamicanimator-stop-reacting-to-uigravitybehavior中所述完全相同的问题。我也无法更好地解释它。

有谁知道为什么 UIDynamicAnimator 会突然停止对UIGravityBehavior附加到它们的对象/项目进行动画处理?

编辑

我正在运行Big Nerd Ranch的示例

我修改了示例,因此只有两个立方体,以便更轻松地重现错误。立方体正在下落并且对重力反应很好,但是如果你倾斜手机,使立方体最终在角落里,相互接触,那么它会停止任何运动,因此不再对重力行为做出反应。

我也想知道,这是否是一个 Swift 问题。也许我应该尝试在 Obj-C 中实现这一点,看看错误是否仍然存在。

这是示例:

编辑2

我只是注意到他们不必互相接触就可以停止响应 UIGravityBehavior。

编辑3

好的,似乎是 Swift 中的一个错误。我在 ObjC 中实现了相同的功能,没有任何问题。

0 投票
1 回答
568 浏览

ios - UISnapBehavior 奇怪的抖动 - 迅速

我正在尝试使用UISnapBehavior创建tweening back动画。

我正在尝试使正方形可拖动,然后当正方形被释放时,它会补间回到原来的位置。每次回退时,它似乎都有一条奇怪的轨迹,而不是以正确的角度向后缓动,它似乎在到达目的地之前以一种奇怪的半圆形缓和回来。

先感谢您。

我的代码如下:

0 投票
2 回答
483 浏览

ios - IOS UIDynamicAnimator maskToBounds 不会使碰撞作为边界工作

我在 Xcode 7 中工作,适用于 IOS 9。目标是使用 UIDynamicAnimator、UIGravityBehavior 和 UICollisionBehavior 使圆形对象表现得像球一样。一切正常,除了 UIViews(代表球)看起来是圆形的,但在碰撞过程中表现得像矩形。构建和添加“球”的代码是:

需要设置哪些属性才能使这些对象表现得像圆形?

下面是应用程序的屏幕,显示受重力和碰撞影响的形状如何放置在地面/边界上。我在屏幕截图上绘制了矩形边框以显示不可见但防止球表现为圆形物体的真实边框。

应用截图1

0 投票
0 回答
313 浏览

ios - 我怎样才能提高我的应用程序(swift)的性能,接缝挣扎

我制作了一个使用自定义 UIDynamicBehavior 的应用程序,但我遇到了性能问题。所以我写的游戏在屏幕中间有一个圆圈,并且有小圆点从中间随机“飞”到圆圈的边界。我最多同时在屏幕上大约有 4-5 个圆圈,并且帧已经下降。我也尝试过使用多线程,但我遇到了一些我不明白的奇怪错误,所以我认为我使用错了。有没有人有这方面的经验?有人能帮助我吗?在文件中,您会看到一个函数“lunchBall”,gats 大约每秒调用一次。谢谢你。这是文件:https ://www.dropbox.com/s/hbf2qux47zhd9ap/BallDynamicBehavior.swift?dl=0

0 投票
0 回答
56 浏览

ios - 我在使用 UIDynamicAnimations 以及创建和删除项目时遇到性能问题

我制作了一个基于UIDynamicBehavior. 这是一个游戏,您在屏幕中间有一个圆圈,并且有球从中间发射到外圈(当它们击中时它们消失),“发射”之间的间隔变得越来越短(这确实不会导致问题,稍后您会看到)。好吧,问题是在大约 100 圈之后,一切都变得非常滞后,每次“启动”都会冻结整个游戏一段时间,直到问题变得如此之大,整个事情都冻结了。

问题似乎是我以某种方式没有正确删除球。即使间隔没有改变,同时屏幕上的球数始终相同(3-4),问题仍然存在。

这也不是内存问题,因为内存使用量保持在 20MB 左右,但处理器从一开始的 0% 开始,它只是不断上升,直到达到 100%,整个事情就停止了。

所以当我创建一个球时,这就是那里的所有代码:

这就是我将其添加到行为中的方式:

这就是我删除它的方式:

这是设置为在与另一个圆圈发生碰撞时触发。

对于大量的代码,我很抱歉,但我真的无法找出问题出在哪里,所以我很难指出它。

我已经解决这个问题超过 2 天了,但仍然无法弄清楚。我尝试了一切,重用行为(我没有删除它,而是创建了一个数组,以便下一个球从那里拿走它并设置一个新角度),多线程(我对此并没有真正的经验),我还研究了时间探查器,但因为我是初学者,所以对我来说没有任何意义。我真的很感谢知道自己在做什么的人能够只盯着它检查并发现任何问题,因为我认为对于有经验的程序员来说问题可能非常明显。如果有帮助,这是我的项目的链接。所以你可以看到我有两件我认为很重要的事情。我有一个子类UIDynamicBehavior我设置了所有行为和一个基本的快速类“BallLauncher”,这应该是导致球发射的原因,因此那里也可能存在问题。