iOS7如何理解UIPushBehaviorMode瞬时模式下的UIPushBehavior幅值?
我在看苹果的文档,了解它的行为,它让我在即时模式下感到困惑。我知道加速度公式是力=质量*加速度。我假设一个视图的质量是宽度*高度*密度(1)。文件对推力大小的描述如下: 默认幅值为零,相当于没有力。连续的 大小为1.0的力向量,应用于100点x 100 “密度”值为1.0的点视图会产生加速度的视图 100点/秒²,在角度或 pushDirection属性iOS7如何理解UIPushBehaviorMode瞬时模式下的UIPushBehavior幅值?,ios7,physics,uidynamicbehavior,uidynamicanimator,uipushbehavior,Ios7,Physics,Uidynamicbehavior,Uidynamicanimator,Uipushbehavior,我在看苹果的文档,了解它的行为,它让我在即时模式下感到困惑。我知道加速度公式是力=质量*加速度。我假设一个视图的质量是宽度*高度*密度(1)。文件对推力大小的描述如下: 默认幅值为零,相当于没有力。连续的 大小为1.0的力向量,应用于100点x 100 “密度”值为1.0的点视图会产生加速度的视图 100点/秒²,在角度或 pushDirection属性 这对于持续推动来说是有意义的,因为它提供恒定的加速度。它没有说任何关于内在推动的内容我如何理解1级瞬时推力为100x100视图提供的速度?编辑
这对于持续推动来说是有意义的,因为它提供恒定的加速度。它没有说任何关于内在推动的内容我如何理解1级瞬时推力为100x100视图提供的速度?编辑:似乎@martin有更好的答案。请检查一下。我还没来得及检查 瞬时推压时没有加速度(
uipushbehaviormodetransientative
)。
然后,因为你不能玩震级
(它没有影响)。
相反,您可以使用pushDirection
向量值。
即:
此外,您还可以添加一个uidynamictembehavior
来直接作用于您移动的对象的行为,以便添加一些阻力
,摩擦
。。。如果你想放慢速度
UIDynamicItemBehavior *resistanceBehavior = [[UIDynamicItemBehavior alloc] initWithItems:@[view]];
resistanceBehavior.resistance = 1.0;
[self.animator addBehavior:resistanceBehavior];
起初我对@HuguesBR的答案投了赞成票,但现在我很后悔,因为他的第一段错了(5分钟后不能取消赞成票) 根据文件, 可以用幅值(幅值)和弧度角(角度)表示推行为的力向量不使用弧度角,您可以通过使用pushDirection属性使用x和y分量等效地表示方向。无论使用哪种方法,替代的等效值都会自动更新 因此,如果您将
推送方向向量设置为(-1,0)
,您将在调试中看到幅值=1
和角度=PI/2
,反之亦然
我在一个小的xcode项目中试验了uipushBehaviorModeInstantial
和UIPushBehaviorModeContinuous
模式,没有
UIDynamicEmbehavior
已定义。我发现了奇怪的行为:
uipushBehaviorModeInstance
:
- 仅对对象应用一次力,力将永远保持不变
- 默认情况下,它的
活动
属性设置为否
。将active
属性设置为YES
将应用力!及
用力两次!(见编辑)
- 一旦推送行为激活,调用self.pushBehavior1.active=NO代码>什么也不做
UIPushBehaviorModeContinuous
:
- 在对象上为每个帧应用一个力。它肯定是速度和加速度,但速度上限大于瞬时速度李>
active
属性默认设置为YES
,更改幅值
(或pushDirection
)开始移动
- 查看速度首先比被推的那一刻慢,但很快就超过了它
因此,为了回答@AlexStone,我用代码测量了移动物体的速度,并用密度为1的和阻力为0的将物体推到100x100视图中(事实上我观察到大约99.8)
编辑:
在瞬时
模式下进行更多测试后,活动
属性默认设置为是
,但在模拟物理之后,在帧结束时返回到否
。
的确
将创建一个运动。
要再次推动,只需执行以下操作:
self.pushBehavior.active = YES;
你能用uipushbehaviormodetransient
发布一些代码吗?我在测试前对你的答案投了更高的票,因为它可以解释我的问题,但是pushDirection
对我不起作用……我无法成功地使uipushbehaviormodetransient
工作!我也写了一篇关于这方面的文章,基本上它的数量单位是动力
self.pushBehavior1.active = YES;
self.pushBehavior1.active = YES;
self.pushBehavior.magnitude = 1;
[self.animator addBehavior:self.pushBehavior];
self.pushBehavior.active = YES;