7 Stimmen

Animation beim Bewegen von CALayern deaktivieren

Der folgende Code animiert die Bewegung, auch wenn ich keine beginAnimations:context . Wie bringe ich es dazu, sich zu bewegen, ohne zu animieren? Dies ist ein neues iphone view-Projekt, und dies sind die einzigen Aktualisierungen, die es gibt.

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

14voto

Laurent Etiemble Punkte 26361

Am einfachsten ist es, die Animationsdauer außer Kraft zu setzen, indem man den Positionscode in eine Transaktion einfügt:

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

4voto

CodeShift Punkte 51

Der einfachste Weg:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X