setSelectionIndicatorImage tiene un tamaño incorrecto para iPhone 6 y iPhone 6+

Estoy usando el siguiente método para establecer el indicador de selección para el elemento de la barra de tabs seleccionada. Funciona bien para iPhone 4 / 4s / 5 / 5s pero no en iPhone 6/6 +.

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

Cualquier sugerencia

EDITAR: Parece que, después de todo, esta solución debería funcionar, tuve algunos problemas con el caching

 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 es un png de 82×49, he probado con otros tamaños pero esto parece encajar mejor. Dividiré el width del marco por el número de elementos que tengo en la tabBar, en mi caso 5, luego creo un nuevo UIImage del tamaño "correcto" y lo establezco como la image de selectionIndicatorImage Indicación.

Aquí está mi subclass UITabBarController ajuste UITabBarController . Simplemente proporcione una image y se ajustará a todos los iPhones y iPad conocidos. También actualizará el tamaño cada vez que cambie la colección de características para que sea compatible con todas las funciones y rotation del nuevo iPad.

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