2014-10-21 10 views
7

के लिए गलत आकार का है I चयनित टैब बार आइटम के लिए चयन सूचक सेट करने के लिए निम्न विधि का उपयोग कर रहा हूं। यह आईफोन 4/4 एस/5/5 एस के लिए अच्छा काम करता है लेकिन आईफोन 6/6 + में नहीं।setSelectionIndicatorImage iphone 6 और iPhone 6+

[[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"activeshape.png"] ]; 

कोई भी सुझाव

उत्तर

15

संपादित करें: ऐसा लगता है कि के बाद यह सब समाधान काम करना चाहिए, मैं कैश के साथ कुछ मुद्दों

UIImage *selTab = [[UIImage imageNamed:@"tabHighlight"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
CGSize tabSize = CGSizeMake(CGRectGetWidth(self.view.frame)/5, 49); 
UIGraphicsBeginImageContext(tabSize); 
[selTab drawInRect:CGRectMake(0, 0, tabSize.width, tabSize.height)]; 
UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
// 
[self.tabBar setSelectionIndicatorImage:reSizeImage]; 

tabHiglight 82x49 की एक png है था, मैं के साथ परीक्षण किया है अन्य आकार लेकिन यह सबसे अच्छा लगता है। मैं टैबबार में मौजूद वस्तुओं की संख्या से फ्रेम के width को विभाजित करता हूं - मेरे मामले 5 में, फिर मैं "दाएं" आकार का एक नया UIImage बनाता हूं और इसे selectionIndicatorImage के रूप में सेट करता हूं।

+2

2x और 3x उपकरणों मैं इस्तेमाल किया समर्थन करने के लिए: UIGraphicsBeginImageContextWithOptions (tabSize, नहीं, [UIScreen mainScreen] .scale); – AlexD

1

यहां मेरा ऑटो-एडजस्टिंग UITabBarController सबक्लास है। बस एक छवि प्रदान करें और यह सभी ज्ञात iPhones और iPads को समायोजित करेगा। जब भी विशेषता संग्रह बदलता है तो यह आकार भी अपडेट करेगा, इसलिए यह सभी नई आईपैड सुविधाओं और रोटेशन का समर्थन करता है।

import UIKit 

class TabBarController: UITabBarController { 
    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 

     updateSelectionIndicatorImage() 
    } 

    override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) { 
     super.traitCollectionDidChange(previousTraitCollection) 

     updateSelectionIndicatorImage() 
    } 

    func updateSelectionIndicatorImage() { 
     let width = CGRectGetWidth(tabBar.bounds) > 420 ? 420 : CGRectGetWidth(tabBar.bounds) 
     var selectionImage = UIImage(named: "TabSelectionIndicator") 
     let tabSize = CGSizeMake(width/5, 49) 

     UIGraphicsBeginImageContext(tabSize) 
     selectionImage?.drawInRect(CGRectMake(0, 0, tabSize.width, tabSize.height)) 
     selectionImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     tabBar.selectionIndicatorImage = selectionImage 
    } 
} 
संबंधित मुद्दे