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