2012-01-07 14 views
7

HidesBottomBarWhenPushed मैं कैसे एक केंद्र आदि यहां से पथ की तरह बटन, Instagram, के साथ एक टैब बार बनाने के लिए पर उदाहरण का अनुसरण कर रहा हूँ: http://idevrecipes.com/2010/12/16/raised-center-tab-bar-button/छिपाएं केंद्र टैब बार बटन जब धक्का दिया दृश्य सेट

समस्या मेरे पास है वह यह है कि जब एक दृश्य को स्टैक पर धकेल दिया जाता है जो टैब बार को छिपाने के लिए HidesBottomBarWhen दबाया जाता है, तो केंद्र बटन अभी भी प्रदर्शित होता है।

टिप्पणियों में, कई अन्य लोगों को यह समस्या है, लेकिन कोई समाधान समाधान नहीं है। (मैंने टिप्पणियों में सभी सुझाए गए समाधानों का प्रयास किया है)

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

क्या किसी को यह काम मिल गया है?

+0

मैं इसका समाधान ढूंढ रहा हूं, मैंने कोशिश की [self.tabBar addSubView: बटन]; लेकिन यह – carbonr

+0

काम नहीं करता है उम्मीद है कि यह http://stackoverflow.com/questions/11225696/how-to-hide-custom-tab-bar-button-when-hidesbottombarwhenpushed-is-true?rq=1 – vamsi575kg

उत्तर

6

मुझे एक ही समस्या थी। मैंने निम्न दृश्य को ओवरराइड करके बेसव्यू कंट्रोलर.एम (मेरा यूआईटीएबीबार कंट्रोलर सबक्लास) संपादित किया है, जैसा कि निम्नलिखित दृश्य डीडलाउटआउट सब्यूव्यूज विधि (बटन मेरा केंद्र बटन है) जैसा कि अनुसरण किया गया है।

- (void)viewDidLayoutSubviews{ 
    button.center = self.tabBar.center; 
} 

अब आपका बटन टैबबार का पालन करता है।

+0

याद रखने में मदद कर सकता है 'बटन.layer.zPosition = 1;' को भी शामिल करने के लिए, टैबबार द्वारा कवर किए जाने वाले बटन को रोकने के लिए – Lunayo

2

आप tabBar को यह एक ही लेकिन UIImageView के साथ करते हैं और इसे जोड़ने के लिए:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:    (UIViewController *)viewController 
{ 
    if (tabBarController.selectedIndex != AUCenterTabBarButtonIntex) { 
     self.centerImageView.highlighted = NO; 
    } else { 
     self.centerImageView.highlighted = YES; 
     self.selectedIndex = AUCenterTabBarButtonIntex; 
    } 

} 


- (void)addCenterImageViewWithImage:(UIImage *)image highlitedImage:(UIImage *)highlitedImage 
{ 
    UIImageView *centerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, image.size.width/2, image.size.height/2)]; 
    centerImageView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin; 

    centerImageView.image = image; 
    centerImageView.highlightedImage = highlitedImage; 

    CGFloat heightDifference = centerImageView.frame.size.height - self.tabBar.frame.size.height; 
    if (heightDifference < 0) 
     centerImageView.center = CGPointMake(self.tabBar.center.x, centerImageView.center.y); 
    else 
    { 
     CGPoint center = self.tabBar.center; 
     center.y = (self.tabBar.frame.size.height/2) - (heightDifference/2); 
     centerImageView.center = center; 
    } 

    [self.tabBar addSubview:centerImageView]; 

    self.centerImageView = centerImageView; 
} 
1

धक्का UIViewController से पहले, जोड़ने, अपने कस्टम बटन

UITabBar करने के लिए पॉप UIViewController के बाद आत्म करने के लिए कस्टम बटन बहाल। दृश्य

उपवर्ग UITabViewController

NSArray *array= self.viewControllers; 
for(UIViewController *controller in array){ 
if([controller isKindOfClass:[UINavigationController class]]){ 
    UINavigationController *navigationController=(UINavigationController*)controller; 
    navigationController.delegate=self; 
    } 
} 

प्रतिनिधि विधि लागू करें

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
if (viewController.hidesBottomBarWhenPushed) { 
    CGRect rect= [button convertRect:button.bounds toView:self.tabBar]; 
    [button removeFromSuperview]; 
    [self.tabBar addSubview:button]; 
    button.frame=rect; 
} 
} 
-(void)navigationController:(nonnull UINavigationController *)navigationController didShowViewController:(nonnull UIViewController *)viewController animated:(BOOL)animated{ 
if(!viewController.hidesBottomBarWhenPushed){ 
    CGRect rect= [button convertRect:button.bounds toView:self.view]; 
    [button removeFromSuperview]; 
    [self.view addSubview:button]; 
    button.frame=rect; 
} 
} 
संबंधित मुद्दे