J'ai deux UIButton
, le premier bouton va déclencher le - beginAnimation
de CustomeView et l'autre déclenchera le - endAnimation
. quand je presse rapidement ces deux boutons à leur tour, comme begin -> end -> begin -> end -> begin -> end
, j'ai constaté que le CADisplayLink
ne peut pas arrêter. Qui plus est, le taux de tir de - rotate
est plus de 60fps, est devenu 60 -> 120 -> 180
, tout comme il y a plus d'un CADisplaylink
dans mon RunLoop principal, donc est-il possible de le réparer? Et je dois garder le CADisplaylink
courir avant venu à zéro alpha de la vue, donc je mets le [self.displayLink invalidate];
dans le bloc d'achèvement, peut-être cela va causer ce problème?CADisplayLink ne peut pas s'arrêter après invalide
@interface CustomeView : UIView
@end
@implementation CustomeView
- (void)beginAnimation // triggered by a UIButton
{
[UIView animateWithDuration:0.5 animations:^{ self.alpha = 1.0; }];
self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(rotate)];
[self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}
- (void)endAnimation // triggered by another UIButton
{
[UIView animateWithDuration:0.5 animations:^{ self.alpha = 0.0; } completion:^(BOOL finished) {
[self.displayLink invalidate];
}];
}
- (void)rotate
{
// ....
}
Merci, utile! – Illya