Отключить анимацию при перемещении CALayers - PullRequest
7 голосов
/ 28 мая 2010

Следующий код анимирует движение, хотя я не использовал beginAnimations:context. Как заставить его двигаться без анимации? Это новый проект iphone view, и это единственные его обновления.

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

14 голосов
/ 28 мая 2010

Самый простой способ сделать это - переопределить продолжительность анимации, введя код позиции в транзакцию:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    [CATransaction begin];
    [CATransaction setAnimationDuration:0];
    sublayer.position = [[touches anyObject] locationInView:self.view];
    [CATransaction commit];
}
4 голосов
/ 04 октября 2012

Более простой способ:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...