tab item bar ios objective-c uitabbarcontroller height uitabbar

ios - item - uitabbarcontroller programmatically swift 4



Cambiar la altura de la barra de UITab (15)

Utilizo UITabBarController como una vista de raíz y la aplicación es compatible con iOS 6 y superior. La jerarquía de clases del proyecto es la siguiente.

UITabBarController - tab1 - UINavigationController - UIViewController - UIViewController . . - tab2 - UINavigationController - UIViewController - UIViewController . . . - tab3 - UIViewController - tab4 - UIViewController

UITabBar código de abajo para cambiar la altura de UITabBar en uno de los UIViewControllers (que está dentro de UINavigationController ) en la jerarquía anterior.

CGRect tabbarFrame = self.tabBarController.tabBar.frame; tabbarFrame.size.height += 60; self.tabBarController.tabBar.frame = tabbarFrame;

Pero no está cambiando la altura. UITabBar se muestra con la altura predeterminada. Aunque el registro de su valor imprime el valor cambiado como se muestra a continuación.

<UITabBar: 0xb528f60; frame = (0 431; 320 109); autoresize = W+TM; layer = <CALayer: 0xb529080>>

¿Cómo puedo cambiar la altura de UITabBar para lograr algo como esto?


Construyendo en respuestas anteriores y actualizando para Swift 3.

Subclase UITabController y asegúrate de asignar tu nueva clase personalizada al Identity Inspector de tu UITabController.

Swift 3.0

class MainTabBarController: UITabBarController { override func viewWillLayoutSubviews() { var newTabBarFrame = tabBar.frame let newTabBarHeight: CGFloat = 60 newTabBarFrame.size.height = newTabBarHeight newTabBarFrame.origin.y = self.view.frame.size.height - newTabBarHeight tabBar.frame = newTabBarFrame } }

Advertencia : si obtiene un espacio en blanco debajo de la barra de pestañas, asegúrese de haber puesto este código en viewWillLayoutSubviews () y no viewDidLoad ().


Cree una subclase personalizada de tipo UITabBar , luego implemente el siguiente método:

@implementation CustomTabBar #define kTabBarHeight = // Input the height we want to set for Tabbar here -(CGSize)sizeThatFits:(CGSize)size { CGSize sizeThatFits = [super sizeThatFits:size]; sizeThatFits.height = kTabBarHeight; return sizeThatFits; } @end

Espero que esto funcione.


Implementación de Xamarin:

public override void ViewWillLayoutSubviews() { base.ViewWillLayoutSubviews(); const float newTabBarHeight = 40f; TabBar.Frame = new CGRect(TabBar.Frame.X, TabBar.Frame.Y + (TabBar.Frame.Height - newTabBarHeight), TabBar.Frame.Width, newTabBarHeight); }


La altura de la barra de pestañas es una constante establecida por Apple, por lo que no puedes cambiarla.


Me enfrenté a este problema y pude resolverlo.

UITabBarController agregar el siguiente código a su subclase de la clase UITabBarController .

const CGFloat kBarHeight = 80; - (void)viewWillLayoutSubviews { CGRect tabFrame = self.tabBar.frame; //self.TabBar is IBOutlet of your TabBar tabFrame.size.height = kBarHeight; tabFrame.origin.y = self.view.frame.size.height - kBarHeight; self.tabBar.frame = tabFrame; }


Para iOS 8.2 , Xcode 6.2 Swift idioma:

Cree un "DNMainTabVC.swift" (archivo DeveloperNameMainTabViewController.swift) para su UITabBarController (de tipo UITabBarController ) y conéctelo a su VC de guión gráfico.

Añade las siguientes líneas:

override func viewWillLayoutSubviews() { var tabFrame = self.tabBar.frame // - 40 is editable , the default value is 49 px, below lowers the tabbar and above increases the tab bar size tabFrame.size.height = 40 tabFrame.origin.y = self.view.frame.size.height - 40 self.tabBar.frame = tabFrame }

Esto funcionó para mí.


Por alguna razón, la respuesta de @Rushikesh funcionó bastante bien hasta iOS 10, pero tuve algunos problemas con iOS 11 y Swift 3.2 .

La barra de tabulación cambiaba su marco cada vez que tocaba una nueva pestaña.

viewDidLayoutSubviews() esto al poner el código en la función viewDidLayoutSubviews() lugar de viewWillLayoutSubviews()

Swift 3:

override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() var tabFrame = tabBar.frame tabFrame.size.height = 65 tabFrame.origin.y = view.frame.size.height - 65 tabBar.frame = tabFrame }


Probado en XCode 9.0 y Swift 4

Como se sugirió en las respuestas anteriores, herede UITabBar y reemplaza a sizeThatFits , pero marca el height como @IBInspectable , para que pueda configurarse en el Creador de interfaces :

import UIKit class CustomTabBar : UITabBar { @IBInspectable var height: CGFloat = 0.0 override func sizeThatFits(_ size: CGSize) -> CGSize { var sizeThatFits = super.sizeThatFits(size) if height > 0.0 { sizeThatFits.height = height } return sizeThatFits } }

Establezca la clase CustomTabBar para la UITabBar en el Inspector de identidad (⌥⌘3):

Luego, establezca la Height deseada (mayor que 0.0 ) en el inspector de atributos (4):


Puedes modificar la altura de la barra de pestañas subclasificándola. En realidad lo hice hace mucho tiempo. xcode 6.0

override func sizeThatFits(_ size: CGSize) -> CGSize { return CGSize(width: super.sizeThatFits(size).width, height: 60) }

Eso debería devolver su ancho por defecto con la altura de 60pts.


esta es también una manera de hacer eso

extension UITabBar { override public func sizeThatFits(size: CGSize) -> CGSize { super.sizeThatFits(size) var sizeThatFits = super.sizeThatFits(size) sizeThatFits.height = 71 return sizeThatFits } }


iPhoneX tiene una altura diferente, por lo que si nos movemos a una altura menor, la forma de la barra de pestañas será mala en iPhoneX

- (void)viewWillLayoutSubviews { int requiredHeight = 55; CGRect tabFrame = self.tabBar.frame; if (tabFrame.size.height < requiredHeight) { tabFrame.size.height = requiredHeight; tabFrame.origin.y = self.view.frame.size.height - requiredHeight; self.tabBar.frame = tabFrame; } }


Para Swift 4

extension UITabBar { override open func sizeThatFits(_ size: CGSize) -> CGSize { var sizeThatFits = super.sizeThatFits(size) sizeThatFits.height = 60 // adjust your size here return sizeThatFits } }


Swift 2.0:

var tabBar:UITabBar? override func viewWillLayoutSubviews() { var tabFrame: CGRect = self.tabBar!.frame tabFrame.size.height = 60 tabFrame.origin.y = self.view.frame.size.height - 60 self.tabBar!.frame = tabFrame }


Swift 3.0+ Reemplace 200 a su altura deseada en el siguiente código.

extension UITabBar { override open func sizeThatFits(_ size: CGSize) -> CGSize { return CGSize(width: UIScreen.main.bounds.width, height: 200) } }


Swift3.0, Swift 4.0 compatible

Altura de la barra de pestañas predeterminada de Pre-iPhone X : 49 puntos

Altura predeterminada de la barra de pestañas del iPhone X : 83 puntos

Una solución universal compatible con todos los dispositivos iOS, incluido el tamaño de pantalla del iPhone X , tendría este aspecto:

  1. Capture la altura por defecto de UITabBar:

    fileprivate lazy var defaultTabBarHeight = { tabBar.frame.size.height }()

  2. Ajustar la altura de UITabBar:

    override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() let newTabBarHeight = defaultTabBarHeight + 16.0 var newFrame = tabBar.frame newFrame.size.height = newTabBarHeight newFrame.origin.y = view.frame.size.height - newTabBarHeight tabBar.frame = newFrame }