是的,我知道这是一个很多问题的问题,但我仍然无法让它发挥作用。
我的功能会移动视图上的所有子视图 这就是它的样子:
- (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
标志,但它们仍“跳回”。我也尝试重写委托方法并在完成后手动设置位置,但没有运气。
任何想法我做错了什么?
答案 0 :(得分:2)
由于您正在为图层的transform
属性设置动画,因此您应该检查还有哪些内容可以将其重置为CATransform3DIdentity
(默认)状态。但为什么不使用简单的[UIView animateWithDuration:]
方法为视图的框架设置动画?
答案 1 :(得分:2)
您需要在开始动画之前设置图层的“结束”位置,以免它跳回来。
[yourView layer].position = endPos;