gpt4 book ai didi

iOS7如何理解UIPushBehaviorModeInstantaneous模式下的UIPushBehavior量级?

转载 作者:行者123 更新时间:2023-12-04 21:39:40 27 4
gpt4 key购买 nike

我正在查看有关 UIPushBehavior 的 Apple 文档,它在瞬时模式下让我感到困惑。我知道加速度公式是Force = Mass * acceleration。我假设 View 的质量是宽度*高度*密度(1)。该文档描述了插入量级如下:

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.

这在持续插入方面是有意义的,它提供了持续的加速。它没有说任何关于瞬时插入的事情。 我如何理解 1 级的瞬时插入将提供给 100x100 View 的速度?

最佳答案

我最初对@HuguesBR 的回答投了赞成票,但现在我很后悔,因为他的第一段是错误的(5 分钟后无法取消投票)。

根据文档,

You express a push behavior’s force vector in terms of magnitude (magnitude) and radian angle (angle). Instead of using radian angle, you can equivalently express direction using x and y components by using the pushDirection property. Whichever approach you use, the alternate, equivalent values update automatically.

因此,如果您将 pushDirection 向量设置为 (-1, 0),您将在调试中看到 magnitude = 1angle = PI/2,反之亦然。

我在一个小型 xcode 项目中试验了 UIPushBehaviorModeInstantaneousUIPushBehaviorModeContinuous 模式,没有 UIDynamicItemBehavior 已定义。我发现了奇怪的行为:

UIPushBehaviorModeInstantaneous :

  • 只对物体施加一次力,该力将永远存在。
  • 将其 active 属性默认设置为 NOactive 属性设置为 YES 会应用强制!

    self.pushBehavior1.active = YES;
    self.pushBehavior1.active = YES;

    施加两次力!(查看编辑)

  • 一旦推送行为被激活,调用 self.pushBehavior1.active = NO; 什么都不做。

UIPushBehaviorModeContinuous :

  • 对每一帧对象施加一个力。它绝对是加速度,但上限速度大于瞬时速度......
  • active 属性默认设置为 YES,更改 magnitude(或 pushDirection)开始移动。
  • 查看速度先慢后快,但很快就超过了。

所以,为了回答@AlexStone,我用代码测量了移动物体的速度,并用 density 即时推送到100x100 View of 1 resistance of 0 会给物体一个100 点/秒 的速度(我观察到的实际上是 99.8 左右)

编辑:

Instantaneous 模式下进行更多测试后,似乎 active 属性默认设置为 YES,但在帧结束时返回到 NO,就在物理模拟之后。
确实,

self.pushBehavior.magnitude = 1;
[self.animator addBehavior:self.pushBehavior];

将创造一个运动。
要再次推送,只需执行以下操作:

self.pushBehavior.active = YES;

关于iOS7如何理解UIPushBehaviorModeInstantaneous模式下的UIPushBehavior量级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25749521/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com