2010-05-28 7 views
7

Der folgende Code animiert die Bewegung, obwohl ich beginAnimations:context nicht verwendet habe. Wie kann ich es bewegen, ohne zu animieren? Dies ist ein neues iPhone View-Projekt, und dies sind die einzigen Updates dazu.Animation beim Verschieben von CALayers deaktivieren

// 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]; 
} 

Antwort

14

Der einfachste Weg, es zu tun ist, um die Animation Dauer außer Kraft setzen, indem Sie den Positionscode in einer Transaktion setzen:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    [CATransaction begin]; 
    [CATransaction setAnimationDuration:0]; 
    sublayer.position = [[touches anyObject] locationInView:self.view]; 
    [CATransaction commit]; 
} 
+1

oder 'setDisableActions: YES' – Sulthan

4

Mehr einfachste Art und Weise:

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