animation - आईफोन-यूआईएविगेशन नियंत्रक-कैट्रंसैक्शन के साथ कस्टम एनीमेशन



uinavigationcontroller catransition (1)

मैंने कुछ इसी तरह पूरा किया है, हालांकि मैं इसे अपने स्वयं के कार्य में स्थानांतरित करने के लिए परेशान नहीं हुआ:

CATransition *transition = [CATransition animation];
transition.duration = 0.5;
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromBottom;
[self.navigationController.view.layer addAnimation:transition forKey:nil];

[self.navigationController popViewControllerAnimated:NO]

आप इसे बाहर सार सकता है अपने कोड का उपयोग करके, यह ऐसा दिखेगा:

- (void)popViewControllerMoveInFromTop {
[CATransaction begin];
CATransition *transition;
transition = [CATransition animation];
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromTop;
transition.duration = 0.7;

[CATransaction setValue:(id)kCFBooleanTrue
                 forKey:kCATransactionDisableActions];

[self.view.layer addAnimation:transition forKey:nil];
[self  popViewControllerAnimated:NO];    
[CATransaction commit];
}

आप UIView के एनिमेशन का उपयोग कर पॉप के लिए एक कस्टम संक्रमण भी बना सकते हैं। यहां आप दृश्य में एनीमेशन लागू कर रहे हैं जो कि गायब होने के बारे में है और फिर इसे दृश्य स्टैक से पॉप कर रहा है:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.75];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; 

[self.navigationController popViewControllerAnimated:NO];

[UIView commitAnimations];

मैं UINavigationController के लिए एक श्रेणी बनाने की कोशिश कर रहा हूं ताकि मैं कुछ कस्टम एनिमेशन को एक साथ रख सकूं। मैं इस प्रश्न पर आया और मुझे मिल गया मैं एक पुश समारोह के लिए निम्नलिखित के साथ आया हूँ:

- (void)pushViewControllerMoveInFromBottom:(UIViewController *)viewController {
    [CATransaction begin];
    CATransition *transition;
    transition = [CATransition animation];
    transition.type = kCATransitionMoveIn;
    transition.subtype = kCATransitionFromBottom;
    transition.duration = 0.7;

    [CATransaction setValue:(id)kCFBooleanTrue
                     forKey:kCATransactionDisableActions];

    [[[[self.view subviews] objectAtIndex:0] layer] addAnimation:transition forKey:nil];
    [self  pushViewController:viewController animated:YES];
    [CATransaction commit];
}

मुझे समझ नहीं आता कि कौन सी दृश्य / परत उपव्यू कॉल के माध्यम से एक्सेस की जा रही है। इसलिए अगर कोई मुझे यह समझने में मदद कर सकता है, तो यह मददगार होगा। ऐसा लगता है कि स्क्रीन पर आने के बारे में जो कुछ भी देखने को मिल रहा है वह प्रभावशाली है।

लेकिन मेरा मुख्य प्रश्न यह है कि मैं एक पॉप बनाने की कोशिश कर रहा हूं जो उपरोक्त कार्य "पूर्ववत करें" करेगा। स्पष्टता के लिए, कहें कि मेरे पास दो विचार हैं, ए और बी। पहला दृश्य स्क्रीन पर दिखाया गया है। उपरोक्त कार्य, A को बिना धकेल के बी में स्थानांतरित होगा। एक मॉडल दृश्य की तरह बहुत होता लेकिन नीचे दिए गए फ़ंक्शन बी के ऊपर एक पीठ को स्लाइड करता है, बल्कि बी को स्लाइडिंग करता है और ए को जगह में छोड़ देता है

- (void)popViewControllerMoveInFromTop {
    [CATransaction begin];
    CATransition *transition;
    transition = [CATransition animation];
    transition.type = kCATransitionMoveIn;
    transition.subtype = kCATransitionFromTop;
    transition.duration = 0.7;

    [CATransaction setValue:(id)kCFBooleanTrue
                     forKey:kCATransactionDisableActions];

    [[[[self.view subviews] objectAtIndex:0] layer] addAnimation:transition forKey:nil];
    [self  popViewControllerAnimated:YES];    
    [CATransaction commit];
}

मैं एक मोडल दृश्य का उपयोग नहीं करना चाहता और मैं दृश्यों की फ़्रेम बदलने के लिए कस्टम ऐनिमेशन ब्लॉक का उपयोग नहीं करना चाहता।





catransition