Uma pergunta simples, como posso remover o texto do item da barra de guias e mostrar apenas a imagem?
Quero que os itens da barra gostem no aplicativo Instagram:
No inspetor no xcode 6, removo o título e escolho uma imagem @ 2x (50px) e @ 3x (75px). No entanto, a imagem não usa o espaço livre do texto removido. Alguma ideia de como obter a mesma imagem de item da barra de guias como no aplicativo instagram?
ios
swift
uitabbaritem
Voto positivo
fonte
fonte
""
para o título, talvez?Respostas:
Você deve jogar com
imageInsets
propriedade deUITabBarItem
. Aqui está o código de amostra:Os valores internos
UIEdgeInsets
dependem do tamanho da imagem. Aqui está o resultado desse código em meu aplicativo:fonte
fonte
Aqui está como você faz isso em um storyboard.
Limpe o texto do título e defina a inserção da imagem como a imagem abaixo
Lembre-se de que o tamanho do ícone deve seguir as diretrizes de design da apple
Isso significa que você deve ter 25px x 25px para @ 1x, 50px x 50px para @ 2x, 75px x 75px para @ 3x
fonte
Usar a abordagem com a definição de cada propriedade
UITabBarItem
stitle
para""
e atualizaçãoimageInsets
não funcionará corretamente se o controlador de visualizaçãoself.title
estiver definido. Por exemplo, seself.viewControllers
UITabBarController estiverem incorporadosUINavigationController
e você precisar que o título seja exibido na barra de navegação. Neste caso, definaUINavigationItem
o título diretamente usandoself.navigationItem.title
, nãoself.title
.fonte
Versão rápida da resposta ddiego
Compatível com iOS 11
Chame esta função em viewDidLoad de cada primeiro filho dos viewControllers após definir o título do viewController
Melhor prática:
Alternativamente como @daspianist sugerido nos comentários
fonte
class BaseTabBarController: UITabBarController, UITabBarControllerDelegate
e colocar essa função na subclasseviewDidLoad
Se você estiver usando storyboards, esta seria sua melhor opção. Ele percorre todos os itens da barra de guias e para cada um deles define o título como nada e torna a imagem em tela inteira. (Você deve ter adicionado uma imagem no storyboard)
fonte
O iOS 11 atrapalha muitas dessas soluções, então resolvi apenas meus problemas no iOS 11 criando uma subclasse de UITabBar e substituindo layoutSubviews.
fonte
Usei o seguinte código no viewDidLoad do meu BaseTabBarController. Observe que no meu exemplo, eu tenho 5 guias, e a imagem selecionada sempre será base_image + "_selected".
fonte
for var i = 0; i < tabBar...
, você poderia apenas ter dito;for tabBarItems in tabBar.items!
Abordagem Swift 4
Consegui fazer o truque implementando uma função que pega um TabBarItem e faz alguma formatação nele.
Move a imagem um pouco para baixo para torná-la mais centralizada e também oculta o texto da Barra de guias. Funcionou melhor do que apenas definir seu título como uma string vazia, porque quando você tem uma NavigationBar também, a TabBar recupera o título do viewController quando selecionada
Sintaxe mais recente
E basta usá-lo em sua barra de tabulação como:
fonte
Aqui está uma maneira melhor e mais segura de fazer isso, além da resposta principal:
Coloque-o em seu
AppDelegate.didFinishLaunchingWithOptions
para que afete todos os botões da barra de guias ao longo da vida de seu aplicativo.fonte
Uma extensão UITabBarController mínima e segura em Swift (com base na resposta @ korgx9):
fonte
Com base na resposta do ddiego , no Swift 4.2 :
E você só precisa chamar
self.tabBarController?.cleanTitles()
seu controlador de visualização.fonte
Com base em todas as ótimas respostas desta página, criei outra solução que também permite que você mostre o título novamente. Em vez de remover o conteúdo do título, apenas altero a cor da fonte para transparente.
fonte
código:
fonte
Maneira mais fácil e sempre funciona:
fonte
No meu caso, o mesmo ViewController foi usado no TabBar e outro fluxo de navegação. Dentro do meu ViewController, eu defini o
self.title = "Some Title"
que estava aparecendo no TabBar independentemente da configuração do títulonil
ou em branco ao adicioná-lo na barra de guias. Eu também definiimageInsets
o seguinte:item.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
Portanto, dentro do meu ViewController, tratei do título de navegação da seguinte maneira:
fonte
faça uma subclasse de UITabBarController e atribua-a ao seu tabBar, em seguida, no método viewDidLoad coloque esta linha de código:
fonte
TabBar personalizado - iOS 13, Swift 5, XCode 11
Baseado em storyboard. Também pode ser alcançado facilmente de forma programática. Apenas 4 etapas a seguir:
Os ícones da barra de guias devem ter 3 tamanhos, na cor preta. Normalmente, eu faço download em fa2png.io - tamanhos: 25x25, 50x50, 75x75. Os arquivos de imagem PDF não funcionam!
No Storyboard para o item da barra de guias, defina o ícone que deseja usar por meio do Attributes Inspector. (veja a imagem)
Classe UITabBarController
class RoundedTabBarViewController: UITabBarController {
}
Resultado
fonte
Se você está olhando para centralizar as guias / alterar as inserções de imagem sem usar números mágicos, o seguinte funcionou para mim (no Swift 5.2.2):
Em uma subclasse UITabBarController , você pode adicionar as inserções de imagem após definir os controladores de visualização.
Várias das opções acima listam soluções para lidar com a ocultação do texto.
fonte