是的,我知道这是很多问题中的问题,但我仍然无法解决。

我的函数在视图上移动所有子视图。
它是这样的:

- (void)moveTo:(NSInteger)side
{
    CABasicAnimation *animation = [CABasicAnimation animation];
    animation.duration = 0.8f;
    animation.autoreverses = NO;
    animation.removedOnCompletion = NO;
    animation.fromValue = [NSNumber numberWithFloat:0];

    switch (side)
    {
        case kMovementSideDown: animation.toValue = [NSNumber numberWithFloat:568]; break;
        case kMovementSideUp: animation.toValue = [NSNumber numberWithFloat:-568]; break;
    }


    for (UIView *view in [self.view subviews])
    {
        [[view layer] addAnimation:animation forKey:@"transform.translation.y"];
    }
}


我知道这会将所有物品移到4英寸屏幕上,这正是我想要的。
但是,即使我设置了removedOnCompletion = 0标志,在将项目移到外部之后,它们仍会“跳回”内部。我还尝试重写委托方法,并在完成后手动设置位置,但是没有运气。

有什么想法我做错了吗?

最佳答案

由于您要为图层的transform属性设置动画,因此应检查还有什么可以将其重置为CATransform3DIdentity(默认)状态。但是,为什么不使用简单的[UIView animateWithDuration:]方法为视图的框架设置动画呢?

关于objective-c - 完成后将重置CABasicAnimation,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13404049/

10-09 13:40