2009-05-02 15 views
39

मेरे ऐप में मेरे पास एक टैब बार है। और कुछ विचारों में मेरे पास एक टूलबार भी है। तो जब मैं टूलबार के साथ उन विचारों पर आ जाता हूं तो यह बदसूरत दिखता है - दृश्य के नीचे दो बार। मैंने सोचा कि उन विशेष विचारों को दर्ज करते समय टैब बार को छिपाने का यह सबसे अच्छा समाधान होगा। लेकिन मैं बस यह नहीं समझ सका कि इसे सही तरीके से कैसे किया जाए। मैंने UITabBarController की टैबबार छुपी हुई संपत्ति को YES पर सेट करने का प्रयास किया, लेकिन यह काम नहीं किया। और मैं साथ ही में जो कुछ दृश्य मैं कर रहा हूँ निम्नलिखित बात करने की कोशिश की:यूआईटीएबीबार छुपाएं?

self.hidesBottomBarWhenPushed = YES; 

लेकिन यह रूप में अच्छी तरह से काम नहीं किया।

इस स्थिति का सही समाधान क्या है? मैं किसी भी दृश्य में 2 बार नहीं चाहता हूं।

धन्यवाद।

उत्तर

67

आपको छिपाने के लिए उपयोग करना होगा BottomBarWhenPushed संपत्ति को उस नियंत्रक पर YES पर सेट करना है जिसे आप दबा रहे हैं और UITabBarController को नहीं।

otherController.hidesBottomBarWhenPushed = YES; 
[navigationController pushViewController: otherController animated: TRUE]; 

या आप संपत्ति जब आप पहली बार नियंत्रक आप पुश करने के लिए चाहते हैं प्रारंभ सेट कर सकते हैं।

+1

के लिए मैं तीन दृश्य नियंत्रक कि UITabBarController पेश कर सकते हैं। दूसरे दृश्य नियंत्रक पर, मैंने 'self.hidesBottomBarWhenPushed = YES'' initWithNibName में रखा: बंडल: '। जब मैंने दूसरे दृश्य नियंत्रक में टैप करने का परीक्षण किया, तो यूआईटीएबीबार अभी भी वहां था। – JoJo

+1

आईओएस 7 के साथ एक नई परियोजना पर कोशिश की - कोई प्रभाव – Adam

+0

जब मैं स्क्रीन पर वापस जाता हूं, तो मेरे पास टैब बार के शीर्ष पर एक काला स्थान होता है। – manonthemoon

10

इस समाधान का उपयोग न करें!

BOOL hiddenTabBar; 
UITabBarController *tabBarController; 

- (void) hideTabBar { 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.4]; 
    for(UIView *view in tabBarController.view.subviews) 
    { 
      CGRect _rect = view.frame; 
      if([view isKindOfClass:[UITabBar class]]) 
      { 
       if (hiddenTabBar) { 
        _rect.origin.y = [[UIScreen mainScreen] bounds].size.height-49; 
        [view setFrame:_rect]; 
       } else { 
        _rect.origin.y = [[UIScreen mainScreen] bounds].size.height; 
        [view setFrame:_rect]; 
       } 
      } else { 
       if (hiddenTabBar) { 
        _rect.size.height = [[UIScreen mainScreen] bounds].size.height-49; 
        [view setFrame:_rect]; 
       } else { 
        _rect.size.height = [[UIScreen mainScreen] bounds].size.height; 
        [view setFrame:_rect]; 
       } 
      } 
    }  
    [UIView commitAnimations]; 

    hiddenTabBar = !hiddenTabBar; 
} 

Source

+1

कस्टम टैब बार (ALTabBar) का उपयोग करना। यह मेरे लिए काम किया। 4 "स्क्रीन का समर्थन करने के बजाय, मैंने 480 [[यूआईस्क्रीन मुख्यस्क्रीन] सीमाओं को बदल दिया है] -> size.height –

+1

बढ़िया है, लेकिन ... 431 या 480 जैसे निश्चित मानों का उपयोग न करने का प्रयास करें। आपको हमेशा किसी भी को चलाने के लिए कोड लिखना चाहिए स्क्रीन का आकार! – orafaelreis

+0

यदि आप वास्तव में दृश्य का आकार बदलना चाहते हैं (न केवल टैबबार छुपाएं) self.tabBarController.tabBar.hidden = hiddenTabBar; – orafaelreis

8

मैं भी थोड़ी देर के लिए इस के साथ संघर्ष किया। टैब बार को छिपाना सही दिशा में एक कदम है, लेकिन पीछे एक काला आयताकार छोड़ देता है। चाल UIViewController के दृश्य का समर्थन करने वाली परत का आकार बदलना है।

मैं एक समाधान के साथ यहां एक छोटा सा डेमो लिखा है:

https://github.com/tciuro/FullScreenWithTabBar

मुझे आशा है कि इस मदद करता है!

+0

यह समाधान मेरे लिए ठीक काम करता है, धन्यवाद, धन्यवाद, – avmauricio

+0

क्लासी, धन्यवाद। –

+0

बहुत बढ़िया टिप, मेरी इच्छा है अधिक जानकारी दे सकती थी। मुझे यह भी पता नहीं था कि UIViewController का समर्थन करने वाली परत है! – ryan0

11

इंटरफ़ेस बिल्डर में टैब बार में एम्बेडेड व्यू कंट्रोलर के लिए चेकबॉक्स है - पुश पर छुपाएं नीचे बार। आसान मामलों में अब कोड के माध्यम से इसे करने की आवश्यकता नहीं है।

@Micah

Hide bottom bar on push.

+0

यह मेरे लिए ios7 पर काम करता है जहां कोड में समान मान सेट करना – Adam

+0

यह चेकबॉक्स कहां है? – Micah

+1

@Micah अद्यतन पोस्ट देखें। –

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