Ios 在UIGravityBehavior将其移出屏幕后,如何删除UIView?
我试图在action属性上设置一个块,但没有成功。。。有什么想法吗?我知道UIView动画。。。方法有一个完成块,但不确定UIDynamics 编辑:添加代码Ios 在UIGravityBehavior将其移出屏幕后,如何删除UIView?,ios,objective-c,uiview,core-animation,uiviewanimation,Ios,Objective C,Uiview,Core Animation,Uiviewanimation,我试图在action属性上设置一个块,但没有成功。。。有什么想法吗?我知道UIView动画。。。方法有一个完成块,但不确定UIDynamics 编辑:添加代码 [self.animator removeAllBehaviors]; UIGravityBehavior *gravityBehaviour = [[UIGravityBehavior alloc] initWithItems:@[self.onscreen]]; gravityBehaviour.gravityDirection =
[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];
输出反映了视图即使在屏幕外也会继续移动。因此我在if语句中添加了一个内容:[animator removeAllBehaviors];这似乎起到了作用。在行为的action属性上设置块是正确的方法。请在此处发布您的代码。可能还想看看我在书中是如何做到这一点的:
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()
}
}
}