首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UIGravityBehavior将UIView移出屏幕后,如何删除它?

在UIGravityBehavior将UIView移出屏幕后,如何删除它?
EN

Stack Overflow用户
提问于 2015-02-08 09:16:05
回答 2查看 312关注 0票数 0

我试图在action属性上设置一个块,但没有成功...有什么想法吗?我知道UIView动画。方法有一个完成块,但不确定UIDynamicAnimations。

编辑:添加代码

代码语言:javascript
复制
[self.animator removeAllBehaviors];
UIGravityBehavior *gravityBehaviour = [[UIGravityBehavior alloc] initWithItems:@[self.onscreen]];
gravityBehaviour.gravityDirection = CGVectorMake(0, 10);
gravityBehaviour.action = ^{
    if(self.onscreen.frame.origin.y > [UIScreen mainScreen].bounds.size.height)
       [self.onscreen removeFromSuperview];
    NSLog(@"locations is %f, height is %f", self.onscreen.frame.origin.y, [UIScreen mainScreen].bounds.size.height);
};
[self.animator addBehavior:gravityBehaviour];

UIDynamicItemBehavior *itemBehaviour = [[UIDynamicItemBehavior alloc] initWithItems:@[self.onscreen]];
[itemBehaviour addAngularVelocity:-M_PI_2 forItem:self.onscreen];

[self.animator addBehavior:itemBehaviour];

输出反映出,即使在屏幕之外,视图也会继续移动。

EN

回答 2

Stack Overflow用户

发布于 2015-02-08 09:58:28

因此,我通过在if语句中再抛出一个东西来解决这个问题: animator removeAllBehaviors;这似乎起到了作用。

票数 0
EN

Stack Overflow用户

发布于 2016-08-03 18:00:41

代码语言:javascript
复制
let dynamicBehaviour = UIDynamicItemBehavior(items: [randomWord])
weak var weakBehaviour = dynamicBehaviour
weak var weakSelf = self


dynamicBehaviour.action = {

  if let currentY = weakBehaviour?.linearVelocityForItem(rndWord).y {

    if currentY > CGRectGetMaxY(self.view.frame) / 2 {
      weakSelf?.animator?.removeAllBehaviors()
      weakSelf?.randomWord?.removeFromSuperview()
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28389494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档