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
func formatTabBarItem(tabBarItem: UITabBarItem){
tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
tabBarItem.setTitleTextAttributes([NSAttributedStringKey.foregroundColor:UIColor.clear], for: .selected)
tabBarItem.setTitleTextAttributes([NSAttributedStringKey.foregroundColor:UIColor.clear], for: .normal)
}
Sintaxe mais recente
extension UITabBarItem {
func setImageOnly(){
imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
setTitleTextAttributes([NSAttributedString.Key.foregroundColor:UIColor.clear], for: .selected)
setTitleTextAttributes([NSAttributedString.Key.foregroundColor:UIColor.clear], for: .normal)
}
}
E basta usá-lo em sua barra de tabulação como:
tabBarItem.setImageOnly()