2012-06-27 12 views
9

मैं टिटो से कोड स्निपेट का उपयोग कर रहा मेरी टैब बार के लिए एक कस्टम बटन जोड़ने के लिए है: https://github.com/tciuro/CustomTabBarकस्टम टैब बार बटन को छिपाने के लिए कैसे जब hidesBottomBarWhenPushed "TRUE"

(उपवर्गीकरण UITabBarController और

का उपयोग कर एक कस्टम बटन जोड़ने
// .. created a UIButton *button 
[self.view addSubview:button]; 

)

इस विकल्प के साथ एक नेविगेशन नियंत्रक के भीतर एक subview की स्थिति को छोड़कर मेरी स्टोरीबोर्ड आधारित अनुप्रयोग के साथ अच्छा काम करता है सक्षम "धक्का पर नीचे पट्टी को छिपा देता है"। यह टैब बार को वादा करता है जैसा कि वादा किया गया है, लेकिन कस्टम बटन नहीं। ऐसा लगता है कि बटन को टैब बार में सबव्यूव के रूप में जोड़ा जाना चाहिए?

for(UIView *view in self.view.subviews) 
{ 
    if([view isKindOfClass:[UITabBar class]]) 
    { 
     [view addSubview:button]; 
     break; 
    } 
} 

कोई भी विचार: मैं जो भी बटन दिखाई नहीं था इस बदसूरत कोड की कोशिश की?

अद्यतन: मेरे समाधान: मेरी ApplicationDelegate में मैं निम्न विधियों, जो मैं फोन जब भी viewWillAppear या viewWillDisappear तरीकों में आवश्यक निर्धारित करें:

-(void)hideCenterButton:(BOOL)animated 
{ 
    if(animated){ 

    [UIView animateWithDuration:0.3 
          delay:0.0f 
         options:UIViewAnimationCurveLinear 
        animations:^{ 
         CGRect frame = self.centerButton.frame; 
         frame.origin.x = -100; 
         self.centerButton.frame = frame; 
        } 
        completion:^(BOOL finished){ 
        }]; 
    } 
} 

-(void)showCenterButton:(BOOL)animated 
{ 
    if(animated){ 

    [UIView animateWithDuration:0.35 
          delay:0.0f 
         options:UIViewAnimationCurveLinear 
        animations:^{ 
         CGRect frame = self.centerButton.frame; 
         frame.origin.x = (self.view.superview.frame.size.width/2) - (self.centerButton.frame.size.width/2); 
         self.centerButton.frame = frame; 
        } 
        completion:^(BOOL finished){ 
        }]; 
    } 
} 

मैं एनीमेशन की अवधि निर्धारित करने के लिए किया था 0.35 के लिए टैब बार के अनुरूप सद्भावना प्राप्त करने के लिए एस।

+0

अरे, 'UIViewAnimationCurveLinear' एक चेतावनी फेंक देगा, आपको इसके बजाय 'UIViewAnimationOptionCurveLinear' का उपयोग करना चाहिए। – abriggs

+1

कुछ परीक्षणों के बाद, ऐसा लगता है कि सबसे प्राकृतिक एनीमेशन विकल्प 'UIViewAnimationOptionCurveEaseInOut' – abriggs

+0

है मैंने आपके कोड का परीक्षण किया और यह काम करता है, लेकिन टैब बार के पीछे बटन वापस लौटाता है, इस समस्या का कोई समाधान? – xeravim

उत्तर

0

मुझे लगता है कि आप इसके साथ 2 तरीके प्राप्त कर सकते हैं।

1) बटन को पुराने शीर्ष दृश्य नियंत्रक और टैब बार के ऊपर एक दृश्य में प्राप्त करने का प्रयास करें जो धक्का दिया गया नया शीर्ष दृश्य नियंत्रक के नीचे है।

2) नया दृश्य नियंत्रक धक्का दिया जाता है जब बटन को एनिमेट करें।

पहले आईओएस मालिकाना दृश्य पदानुक्रम के साथ मिलिंग की आवश्यकता होगी जो अनियंत्रित, असमर्थित है और किसी भी समय बदल सकता है।

दूसरा एनीमेशन आपके उपयोगकर्ता के नोटिस के लिए पर्याप्त चिकनी दिखाई देने का विषय होगा। यह पूरी तरह से सही व्यवहार करने का विषय नहीं है, बस उचित रूप से दिख रहा है।

मैं व्यक्तिगत रूप से बटन गायब होने के एनीमेशन की सिफारिश करता हूं (इसे अल्फा 0 पर एनिमेट करें) और टैब बार पर जाने वाले आपका व्यू कंट्रोलर दिखाई देने या गायब होने पर आधारित है।

नेविगेशन के लिए एनीमेशन (मुझे विश्वास है) 0.3 सेकंड। यदि बटन टैब बार के बीच में है, तो आप शायद इसे अदृश्य करना चाहते हैं क्योंकि एनिमेटिंग इन कंट्रोलर इसे पहुंचता है (यदि जल्द नहीं होता है) तो 0.1 और 0.15 सेकंड के बीच कुछ इसे एनिमेट करने के लिए उपयोग किया जा सकता है।

अब यह बटन टैब बार के समान व्यवहार नहीं करता है, लेकिन संक्रमण की तीव्रता इतनी कम होने के साथ, यह वास्तव में उपयोगकर्ता के लिए अनजान होगा।

अब आपसे पूछने के लिए एक प्रश्न प्रदान करने के लिए। आपको एक दृश्य नियंत्रक को धक्का देने की आवश्यकता क्यों है जो टैब बार को ओवरलैप करता है? एक मोडल व्यू कंट्रोलर पेश करने से अधिक वांछनीय/आवश्यक क्यों है? यदि आप इसके लिए दृढ़ता से बहस कर सकते हैं, तो इसे और अच्छी किस्मत रखें, अगर यह आवश्यक नहीं है, तो आप एक मॉडल दृश्य नियंत्रक के साथ इच्छित अनुभव प्राप्त करने में सक्षम हो सकते हैं।

+0

आपके सुझावों के लिए धन्यवाद। मैंने अपने आवेदन प्रतिनिधि में दो कार्यों को परिभाषित करके अपना दूसरा समाधान चुना है। मेरा अपडेट देखें – bjoern

+0

अच्छी तरह से किया गया, मुझे आपके सुझाव के अनुसार आपका समाधान पसंद है। – NSProgrammer

0

पर एक बटन डालने के लिए this चेक करें। देखें कि यह hidesBottoBarWhenPushed के साथ काम करता है या नहीं।

+0

thanx, लेकिन इससे मदद नहीं मिलती है। Https://github.com/tciuro/CustomTabBar पर समाधान वास्तव में आपके द्वारा पोस्ट किए जाने वाले प्रसिद्ध लिंक का स्टोरीबोर्ड एक्सटेंशन है। – bjoern

1

इसे संभालने का एक आसान तरीका आपकी फ़ाइल के .h में बटन का उदाहरण बनाना होगा।

UIButton *customTabButton; 

जब खाल बुला धक्का पर नीचे पट्टी छुपा के लिए बटन गुण सेट और इसे फिर से रीसेट भी दृश्य में अगर निचले बार दिख रहा है।

shareFbButton.hidden=YES; 

आप की जाँच इस सभी फ़ाइलों की viewDidLoad है और अगर वाकई बटन प्रदर्शित करने और सभी पृष्ठों आप की जरूरत पर बटन छुपा रहे हैं बनाने के लिए आवश्यक कोड की इस पंक्ति डाल सकते हैं।

if(self.tabBarController.tabBar.isHidden){ 

// set or reset the custom button visibility here 
} 

यह एक तरीका है।

+0

कृपया बताएं कि कैसे, सबव्यू को हटाने से यूई को परेशान किया जा रहा है। एक स्क्रीन को धक्का देने से पहले बटन गायब हो जाता है और खराब दिखता है। आश्चर्य है कि अन्य ऐप्स यह कैसे कर रहे हैं। – carbonr

+0

मुझे यकीन नहीं है कि आप मुझसे क्या पूछ रहे हैं क्या आप इस सवाल को दोबारा लिख ​​सकते हैं? – LostPuppy

1

आप अपने टैबबार के हिस्से को बटन क्यों नहीं बनाते हैं।

tabBarController.tabBar.addSubView(yourButton) 

सब कुछ हल हो जाएगा। चियर्स!

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