2011-03-16 12 views
6

के साथ एक सतत UIView जोड़ना मेरे पास एक UITabBarController का उपयोग करके एक ऐप है, और मेरे पास एक और दृश्य है जिसे टैब बार नियंत्रण के पीछे से स्लाइड करने की आवश्यकता है, लेकिन टैब बार की सामग्री के सामने। यदि यह स्पष्ट नहीं है, तो टैब बार बटन को छोड़कर सबकुछ के सामने दिखाई देने वाले टैबड ऐप में फिसलने वाले विज्ञापन की कल्पना करें।एक UITabBarController

अब तक मैं कोड है कि कुछ इस तरह दिखता है, लेकिन मैं वहाँ यह करने के लिए एक बेहतर तरीका है इसे बदलने के लिए तैयार हूँ ...

tabBarController.viewControllers = [NSArray arrayWithObjects:locationNavController, emergencyNavController, finderNavController, newsNavController, nil]; 

aboutView = [[AboutView alloc] initWithFrame:CGRectMake(0, window.frame.size.height - tabBarController.tabBar.frame.size.height - 37 , 
                 320, window.frame.size.height - tabBarController.tabBar.frame.size.height)]; 


[window addSubview:tabBarController.view]; // adds the tab bar's view property to the window 
[window addSubview:aboutView]; // this is the view that slides in 
[window makeKeyAndVisible]; 

वर्तमान में aboutView UIView का एक उपवर्ग है और बैठता है नीचे की शुरुआती स्थिति में, लेकिन यह टैबबार नियंत्रक को छुपाता है। टैब को शीर्ष पर रखने के लिए मैं इसे कैसे बदल सकता हूं, लेकिन अभी भी अन्य सामग्री के सामने के बारे में दृश्य है?

उत्तर

2

आपको UITableBarController में वर्तमान में सक्रिय दृश्य नियंत्रक में दृश्य के उपदृश्य के रूप में aboutView जोड़ने की आवश्यकता है। आप उस दृश्य को selectedViewController संपत्ति के माध्यम से एक्सेस कर सकते हैं।

जब आप प्रकट होते हैं तो दृश्य को एनिमेट करने के लिए आप अपने दृश्य दृश्य कार्यान्वयन में कोड जोड़ सकते हैं।

मैं ऐसा कुछ पॉपअप दृश्य में करता हूं जिसे मैं टैब बार नियंत्रण के अंतर्गत दिखाना चाहता हूं। आप aboutView कार्यान्वयन पर didMoveToSuperview संदेश के लिए कुछ कोड जोड़ सकते हैं:

- (void)didMoveToSuperview 
{ 
    CGRect currentFrame = self.frame; 

    // animate the frame ... this just moves the view up a 10 pixels. You will want to 
    // slide the view all the way to the top 
    CGRect targetFrame = CGRectOffset(currentFrame, 0, -10); 

    // start the animation block and set the offset 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; // animation duration in seconds 
    [UIView setAnimationDelegate:self]; 

    self.frame = targetFrame; 

    [UIView commitAnimations]; 
} 

इसलिए जब आपका aboutView चयनित दृश्य नियंत्रक के दृश्य में जोड़ा जाता है, यह स्वचालित रूप से एनिमेट।

+0

भयानक। आप मेरे नायक – shulmey

+0

@ user663222 कोई समस्या नहीं है :) खुशी है कि उपयोगी था। – RedBlueThing

संबंधित मुद्दे