自定义UIDynamicBehavior:如何知道动画步数/刻度的总数?

时间:2014-03-11 06:56:17

标签: ios objective-c uikit-dynamics

我想实现一个自定义的UIDynamicBehavior,使视图“爆发”。要做到这一点,我需要淡出它并将其缩放到它的大小的2倍。

我是通过在alpha块中设置视图的boundsaction来实现此目的的。但是,我怎么知道动作块的调用频率?文档说“每个滴答”,但有多少?

我加了一个柜台。没有其他动画,该块被调用30次。通过一些引力和动态行为,它被称为500次。

我也看不出UIDynamicAnimator如何知道它的行为何时“完成”移动的东西。任何人都可以对此有所了解吗?

下面的代码有时会起作用,但有时候行为会在视图完全动画之前停止(即它仍然可见)。

self.action = ^{

        static NSInteger count = 0;
        NSLog(@"animation tick: %d", count);
        count++;

        UIView *view = (UIView*)[weakSelf.items lastObject];
        view.alpha = view.alpha - 0.1;

        CGRect bounds = view.bounds;
        bounds.size.width += 1;
        bounds.size.height += 1;
        view.bounds = bounds;

    };

1 个答案:

答案 0 :(得分:0)

要检测动画何时结束,您可以尝试:

__weak Entity *weakSelf = self;
self.behavior.action = ^{
    if (weakSelf.center.x == weakSelf.lastPosition.x && weakSelf.center.y == weakSelf.lastPosition.y) {
        NSLog(@"end of dynamic movement");
    }
    weakSelf.lastPosition = weakSelf.center;
};

或者检查您要更改的其他值。