2015-10-23 7 views
7

मैं UITabBar को UITabBar के भीतर कार्यान्वित कर रहा हूं। मेरी समस्या यह है कि, दूसरी टैबबार चौड़ाई स्क्रीन आकार के बावजूद निरंतर बनी हुई है। यह बड़ी स्क्रीन में बहुत कुछ खड़ा है। मैं आपको बेहतर समझने के लिए एक स्क्रीनशॉट संलग्न कर रहा हूं।स्क्रीन आकार के साथ UITabBar चौड़ाई नहीं बढ़ रही

GRect rect = CGRectMake(0, 0, self.tabBar.frame.size.width/2, self.tabBar.frame.size.height); 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetFillColorWithColor(context, 
            [[UIColor colorWithRed:102.0/255.0 green:197.0/255.0 blue:234.0/255.0 alpha:1.0] CGColor]); 

    CGContextFillRect(context, rect); 
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    self.tabBar.selectionIndicatorImage = img; 

iPhone6 ​​प्लस से

Second Tab Of First TabBar selected(not part of the question, just to show the full picture)

स्क्रीनशॉट: चुनाव एक नीले रंग की पृष्ठभूमि First TabBar on Top Second on the bottom

Second Tab in Second TabBar Selected

Third tab Selected in Second TabBar Controller

यहाँ कोड का उपयोग कर इंगित किया गया है

+0

क्या यह डिफ़ॉल्ट यूआईटीएबीबार है? आप बटन कैसे हाइलाइट करते हैं? – user3820674

+0

बस उस –

+0

के लिए कोड जोड़ा गया है आपका ऑटोलाउट सेटअप कैसे है? – Kreiri

उत्तर

5

हाइलाइट बटन के स्निपेट के लिए धन्यवाद।
क्या आपको ऐसा कुछ चाहिए?
पोर्ट्रेट अभिविन्यास:

enter image description here


लैंडस्केप अभिविन्यास:

enter image description here

मेरी ViewController का कोड:

#import "ViewController.h" 

@interface ViewController() 
@property (weak, nonatomic) IBOutlet UITabBar *tabBar; 
@property (weak, nonatomic) IBOutlet UITabBar *topTabBar; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [[UITabBar appearance] setTintColor:[UIColor redColor]]; 
    [[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSize:20]} forState:UIControlStateNormal]; 
} 

- (void)viewDidLayoutSubviews { 

    [self highlightTabBarItems:self.tabBar]; 
    [self highlightTabBarItems:self.topTabBar]; 
} 

- (void)highlightTabBarItems:(UITabBar*)currentTabBar { 

    CGFloat highlightedWidth = self.view.frame.size.width/currentTabBar.items.count; 
    [currentTabBar setItemWidth:highlightedWidth]; 
    CGRect rect = CGRectMake(0, 0, highlightedWidth, currentTabBar.frame.size.height); 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetFillColorWithColor(context, [[UIColor colorWithRed:102.0/255.0 green:197.0/255.0 blue:234.0/255.0 alpha:1.0] CGColor]); 
    CGContextFillRect(context, rect); 
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    currentTabBar.selectionIndicatorImage = img; 
} 

@end 
+0

के अंतर्गत आता है परिदृश्य अभिविन्यास के लिए नहीं। ऐप केवल पोर्ट्रेट मोड में चलाने के लिए है। मैं स्क्रीनसाइज –

+0

के साथ चौड़ाई बढ़ाना चाहता हूं तो विधि देखने के लिए DidLayoutSubviews शायद कोई आवश्यकता नहीं है। यदि उत्तर आपकी मदद करता है तो कृपया उत्तर को सही के रूप में चिह्नित करें। – user3820674

+0

यह मदद नहीं की। सोरी –

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