tab custom bar iphone objective-c cocoa-touch uitabbar uitabbaritem

iphone - custom - ¿Moviendo la imagen de UITabBarItem hacia abajo?



uitabbarcontroller (7)

Esto funcionó para mí

Swift 4

let array = tabBarController?.customizableViewControllers for controller in array! { controller.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0) }

Normalmente en cada pestaña de una UITabBar tienes una imagen pequeña y un título que nombra la pestaña. La imagen se posiciona / centra hacia la parte superior de la pestaña para acomodar el título debajo. Mi pregunta es: si quieres tener un tabBar con solo una imagen y sin título, ¿hay alguna manera de mover la imagen hacia abajo para que se centre mejor en la pestaña?

Estoy usando (vea abajo) actualmente:

[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];

pero preferiría usar una imagen más grande sin título, por el momento, si hago que la imagen sea más grande que unos 70 píxeles @ 2 veces, comienza a bordear la parte superior de la UITabBar dejando un montón de espacio sin usar en la parte inferior.


Haga una subclase de UITabBarController , y en su viewDidLoad :

- (void)viewDidLoad { [super viewDidLoad]; [self.viewControllers enumerateObjectsUsingBlock:^(UIViewController *vc, NSUInteger idx, BOOL *stop) { vc.tabBarItem.title = nil; vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0); }]; }

Swift 3:

for vc in self.viewControllers! { vc.tabBarItem.title = nil vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0) }


Intente ajustar los conjuntos de tabBarItem de imageInsets (para mover la imagen del icono) y establezca el título de los controladores en nil (para que no se muestre ningún título). Pon algo así para -init or -viewDidLoad method in view controller:

C objetivo

self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); self.title = nil;

Rápido

self.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0) self.title = nil

UITabBarItem es una subclase de UIBarItem que tiene la propiedad UIEdgeInsets imageInsets . Juega un poco con las inserciones hasta que se vea bien (dependiendo de las imágenes de tu icono tabbar)


Para iOS 11, debes anular el método TraitCollection además de establecer ImageInsets. Agregue el método en su clase Subclase UITabBarController

public override UITraitCollection TraitCollection { get { return UITraitCollection.FromHorizontalSizeClass(horizontalSizeClass: UIUserInterfaceSizeClass.Compact); } }


Puedes hacerlo a través del guión gráfico también. Seleccione su tabbaritem, vaya a inspector de tamaño y asigne las inserciones apropiadas.

* Demostrado en Xcode, Versión 7.3.1 (7D1014)


Si usas Xamarin, esto funciona:

screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0); screen.TabBarItem.Title = "";


SWIFT 3.0

Puede establecer conjuntos de imágenes, configurar arriba, izquierda, abajo y derecha de acuerdo con el diseño.

self.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)