视图边界发生变化时发生碰撞

时间:2016-03-09 16:03:02

标签: ios objective-c uikit-dynamics

我正在使用UIDynamicAnimator,UICollisionBehavior和几个移动的UIImageView。 当一切正常时,它看起来像这样。图片在屏幕上移动而没有叠加。 Moving views with good collision

但是在我更改了某些视图的边界之后,碰撞并没有按照它应该更新,它给了我这个:Moving views after bounds animation

碰撞不再符合预期:视图变得叠加。

我正在使用此代码更新边界:

    [UIView animateWithDuration:2
                      delay:0
                    options:UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                     CGRect newBounds = imageView.bounds;
                     newBounds.size.height = 500;
                     newBounds.size.width = 500;
                     imageView.bounds = newBounds;
                 }
                 completion:^(BOOL finished) {
                     [animator updateItemUsingCurrentState:imageView];
                 }];

updateItemUsingCurrentState:函数似乎对边界变化没有影响......我是对的吗?

2 个答案:

答案 0 :(得分:0)

我通过将我的动画变量设置为nil并再次声明它和每个链接的动画行为来成功完成。

如果其他人有更好的方法,我仍然在听。感谢。

答案 1 :(得分:0)

我最终删除了动态动画师的所有行为,但没有取消分配并重新添加它们:

        let behaviors = (self.dynamicAnimator.behaviors as NSArray).copy() as! [UIDynamicBehavior]
        self.dynamicAnimator.removeAllBehaviors()
        for behavior in behaviors {
            self.dynamicAnimator.addBehavior(behavior)
        }