UIView الرسوم المتحركة didEndSelector: طريقة لا يحصل دعا؟

StackOverflow https://stackoverflow.com/questions/1200122

  •  05-07-2019
  •  | 
  •  

سؤال

ولدي UIView أن يتم نقل في طريقة العرض. بعد 2 ثانية، أود أن نقل UIView من عرض مرة أخرى. كيف أقوم بهذا العمل؟ لقد حاولت أدناه، لكنه لا يعمل: (

ولدي إعداد NSLog، لكنها لا تبدو انها الانتهاء من ثم استدعاء الأسلوب loadingViewDisappear:: (

وشكرا لكم.

...
    [UIView beginAnimations:@"AnimateIn" context:nil];
    [UIView setAnimationCurve: UIViewAnimationCurveEaseOut];
    [UIView setAnimationDuration: 0.7f];
    [UIView setAnimationDidStopSelector:@selector(loadingViewDisappear:finished:context:)];
    loadingView.frame = CGRectMake(rect.origin.x, rect.origin.y - 80, rect.size.width, rect.size.height);
    [UIView commitAnimations];
}

- (void)loadingViewDisappear:(NSString *)animationID finished:(NSNumber *) finished context:(void *) context {
    NSLog( (finished ? @"YES!" : @"NO!" ) );
    if ([animationID isEqualToString:@"AnimateIn"] && finished) {
        [UIView beginAnimations:@"AnimateOut" context:nil];
        [UIView setAnimationCurve: UIViewAnimationCurveEaseIn];
        [UIView setAnimationDelay:2.0f];
        [UIView setAnimationDuration: 0.7f];
        loadingView.frame = CGRectMake(0, 480, 320, 80);
        [UIView commitAnimations];
        [loadingView removeFromSuperview];
    }
}
هل كانت مفيدة؟

المحلول

وتحتاج إلى تعيين مندوب للرسوم المتحركة:

[UIView beginAnimations:@"AnimateIn" context:nil];
[UIView setAnimationCurve: UIViewAnimationCurveEaseOut];
[UIView setAnimationDuration: 0.7f];

//Add this
[UIView setAnimationDelegate:self];

[UIView setAnimationDidStopSelector:@selector(loadingViewDisappear:finished:context:)];
loadingView.frame = CGRectMake(rect.origin.x, rect.origin.y - 80, rect.size.width, rect.size.height);
[UIView commitAnimations];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top