UITabBarController 图像太小 [重复]

Posted

技术标签:

【中文标题】UITabBarController 图像太小 [重复]【英文标题】:UITabBarController images are too small [duplicate] 【发布时间】:2018-12-04 12:48:12 【问题描述】:

我有 3 个版本的图像,75 x 75、50 x 50 和 25 x 25。

当我将它设置为标签栏图像时,我得到了这样的效果:

我希望图像更大,似乎无法编辑。

我已经以编程方式构建了我的 UITabBarController。

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
    

【问题讨论】:

【参考方案1】:

尝试在UIImage扩展中添加此功能

extension UIImage 

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


并在viewDidLoad 中更改代码行

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

有了这个

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

【讨论】:

效果很好,谢谢,但是我的图像现在是蓝色的,看起来 withRenderingMode 不起作用? 尝试使用 .alwaysTemplate

以上是关于UITabBarController 图像太小 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITabBarController 中垂直居中系统图像

UITabBarController 的编程创建和配置 - 为选项卡设置系统图像

相机图像太小

相机 API - 图像太小

android裁剪图像太小

将图像居中放在一个太小的 div 中?