0

I have 3 version of the image, 75 x 75, 50 x 50 and 25 x 25.

When I set it as the tab bar image, I get this effect:

I was expecting the image to be larger and cannot seem to edit this.

I have built my UITabBarController out programmatically.

class MainTabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        navigationController?.isNavigationBarHidden = true

        tabBar.isTranslucent = false
        tabBar.barTintColor = UIColor.hexStringToUIColor(hex: "EFF4EF")

        viewControllers = [
            generateNavigationController(with: ChatBotController(), image: #imageLiteral(resourceName: "tabBar_bot_head").withRenderingMode(.alwaysOriginal)),
        ]
    }

    fileprivate func generateNavigationController(with rootViewController: UIViewController, image: UIImage) -> UIViewController {
        let navController = UINavigationController(rootViewController: rootViewController)
        navController.tabBarItem.image = image
        return navController
    }
}
Harry Blue
  • 4,202
  • 10
  • 39
  • 78

1 Answers1

0

Try add this function in UIImage extension

extension UIImage {

    func resize(targetSize: CGSize) -> UIImage {
        return UIGraphicsImageRenderer(size:targetSize).image { _ in
            self.draw(in: CGRect(origin: .zero, size: targetSize))
        }
    }

}

And in viewDidLoad change the line of code

viewControllers = [
        generateNavigationController(with: ChatBotController(), image: #imageLiteral(resourceName: "tabBar_bot_head").withRenderingMode(.alwaysOriginal)),
    ]

with this

viewControllers = [
        generateNavigationController(with: ChatBotController(), image: #imageLiteral(resourceName: "tabBar_bot_head").withRenderingMode(.alwaysOriginal)).resize(targetSize: CGSize(width: 50, height: 50)),
    ]