2014-10-21 14 views

Antwort

15

EDIT: Es scheint, dass nach all dieser Lösung arbeiten sollte ich mit Cache hatte einige Probleme

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 ist ein png von 82x49, habe ich getestet mit andere Größen aber das scheint am besten zu passen. Ich teile die width des Rahmens durch die Anzahl der Elemente, die ich in der Registerkarte habe - in meinem Fall 5, dann erstelle ich ein neues UIImage der "richtigen" Größe und setze es als selectionIndicatorImage.

+2

2x und 3x Geräte zu unterstützen I verwendet: UIGraphicsBeginImageContextWithOptions (TabSize, NO, [UIScreen mainscreen] .scale); – AlexD

1

Hier ist meine Auto-Anpassung UITabBarController Unterklasse. Stellen Sie einfach ein Bild bereit und es passt sich an alle bekannten iPhones und iPads an. Es aktualisiert auch die Größe, wenn sich die Merkmalssammlung ändert, so dass es alle neuen iPad-Funktionen und die Rotation unterstützt.

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 
    } 
} 
Verwandte Themen