ran*_*eur 6 objective-c ios uikit-dynamics
我正在使用UIDynamics实现一些动画,以在视图之间启用一些基于物理的转换.我想以编程方式暂停和继续这些动画以响应用户的触摸.到目前为止,我发现这样做的唯一方法是从动态动画师中删除行为,然后像这样重新添加它们:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.dynamicAnimator removeBehaviour: self.behaviour1];
[self.dynamicAnimator removeBehaviour: self.behaviour2];
// etc
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
self.behaviour1 = [[UIGravityBehavior alloc] initWithItems: @[self.item]];
self.behaviour1.gravityDirection = self.gravityVector;
[self.dynamicAnimator addBehaviour: self.behaviour1];
self.behaviour2 = [[UICollisionBehavior alloc] initWithItems: @[self.item]];
[self.behaviour2 addBoundaryWithIdentifier: @"Boundary" forPath: self.boundary];
[self.dynamicAnimator addBehaviour: self.behaviour2];
// etc
}
Run Code Online (Sandbox Code Playgroud)
(旁白:我也使用[self.dynamicAnimator updateItemUsingCurrentState: item]而不是重新创建行为,但我仍然需要从动态动画师中删除它们并再次重新添加它们,以便在用户触摸屏幕时暂停.)
我希望能够做的是self.dynamicAnimator.running = NO暂停,然后self.dynamicAnimator.running = YES继续.这将更加简洁,涉及更少的代码(我目前有五种行为可以做到这一点),并有助于避免过程中的潜在错误.不幸的是,该dynamicAnimator.running财产是只读的,所以这是不可能的.
有没有办法暂停和继续UIDynamicAnimator一两行,我错过了?
| 归档时间: |
|
| 查看次数: |
1752 次 |
| 最近记录: |