سؤال

ولقد وضعت التعليمات البرمجية التالية في برنامجي

CATransition *animation = [CATransition animation];  
[animation setDuration:0.5];  
[animation setType:kCATransitionFade];  
[animation setSubtype:kCATransitionFromLeft];  
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];  
   [[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];  

وتعمل كل شيء عظيم ولكن لا يوجد الرسوم المتحركة عندما إنشاء المشروع في محاكاة.

وأين وكيف أدعو هذه الرسوم المتحركة؟ مرة واحدة أحصل على هذا ثم لا أستطيع تقديمه إلى المتجر!

هل كانت مفيدة؟

المحلول

هل لديك أي آراء في التطبيق الخاص بك أو مجرد النافذة؟ أنا فقط أتساءل إذا كنت تقوم بإضافة الرسوم المتحركة تحت كل شيء آخر. في معظم التطبيقات الخاصة بي والعديد من العينات أبل، وهناك MainWindow الكامنة وتضاف جميع وجهات النظر على أعلى من أن استخدام ViewControllers أو وحدات التحكم الأخرى.

وأيضا، هل فكرت باستخدام beginAnimation أبسط من ذلك بكثير ... commitAnimation؟

إذا كنت مجرد محاولة لتحريك إضافة عرض وحذف أخرى، انظر قانون بلدي للقيام بذلك مع viewControllers:

- (void)switchTwoViews:(UIViewController *)view1 otherView:(UIViewController *)view2 cacheTheView:(BOOL) cache;
{
    /*
     This method is called when the info or Done button is pressed.
     It flips the displayed view from the main view to the flipside view and vice-versa.
     */

    UIViewController *coming = nil;
    UIViewController *going = nil;
    UIViewAnimationTransition transition;

    [view1.view setUserInteractionEnabled: NO];
    [view2.view setUserInteractionEnabled: NO];
    if (view1.view.superview == nil) {  
        coming = view1;
        going = view2;
        transition = UIViewAnimationTransitionFlipFromLeft;
    }
    else {
        coming = view2;
        going = view1;
        transition = UIViewAnimationTransitionFlipFromRight;
    }
    //  [coming.view setFrame:CGRectMake(0, 0, 480, 320)];


    NSArray *viewArray = [[NSArray alloc] initWithObjects:coming, going, nil];
    [coming viewWillAppear:YES];
    [going viewWillDisappear:YES];
    [UIView beginAnimations:@"View Flip" context:viewArray]; {
        [UIView setAnimationDuration:1.0];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDidStopSelector:@selector(animationDidEnd:finished:context:)];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

        [UIView setAnimationTransition:transition forView:self.view cache:cache];
        [self.view addSubview: coming.view];
    }
    [UIView commitAnimations];

}
- (void) animationDidEnd:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
    NSArray *viewArray = context;
    [((UIViewController *)[viewArray objectAtIndex:1]).view removeFromSuperview];
    [[viewArray objectAtIndex:1] viewDidDisappear:YES];
    [[viewArray objectAtIndex:0] viewDidAppear:YES];
    [[[viewArray objectAtIndex:0] view] setUserInteractionEnabled: YES];
    [viewArray release];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top