代码之家  ›  专栏  ›  技术社区  ›  Sean Clark Hess

移动炉管时禁用动画

  •  7
  • Sean Clark Hess  · 技术社区  · 14 年前

    下面的代码将动画化运动,即使我没有使用 beginAnimations:context . 我怎样才能让它在没有动画的情况下移动?这是一个新的iPhone视图项目,这些是对它的唯一更新。

    // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        sublayer = [CALayer new];
        sublayer.backgroundColor = [[UIColor redColor] CGColor];
        sublayer.frame = CGRectMake(0, 0, 100, 100);
    
        [self.view.layer addSublayer:sublayer];
    }
    
    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
        sublayer.position = [[touches anyObject] locationInView:self.view];
    }
    
    2 回复  |  直到 12 年前
        1
  •  14
  •   Laurent Etiemble    14 年前

    最简单的方法是通过将位置代码放入事务来覆盖动画持续时间:

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
        [CATransaction begin];
        [CATransaction setAnimationDuration:0];
        sublayer.position = [[touches anyObject] locationInView:self.view];
        [CATransaction commit];
    }
    
        2
  •  4
  •   CodeShift    12 年前

    更简单的方法:

    sublayer.position = [[touches anyObject] locationInView:self.view];
    [sublayer removeAnimationForKey:@"position"];