我在assets文件夹中有一个图像,它没有显示在标签栏上。我已经将“渲染为”设置为“原始图像”,正如其他答案所说的那样,但这并不能解决问题。
class CustomTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let homeController = HomeController(collectionViewLayout: UICollectionViewFlowLayout())
let navigationController = UINavigationController(rootViewController: homeController)
navigationController.tabBarItem.image = UIImage(named:"news_feed_icon")
viewControllers = [homeController]
}
}
答案 0 :(得分:2)
试试这个。
添加viewDidLoad
let customTabBarItem:UITabBarItem = UITabBarItem(title: nil, image: UIImage(named: "news_feed_icon")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal), selectedImage: UIImage(named: "news_feed_icon"))
self.tabBarItem = customTabBarItem
答案 1 :(得分:0)
可能有几个原因导致这种情况发生:
1)您可能为图片输入了错误的名称
2)图片的大小可能太大而无法显示。标签栏项目图像的大小应为28pt-32pt(像素)。
3)它也可能不是正确的格式。标签栏图像应为PNG,使用一种纯色呈现。如果您尝试在公园或其他地方加载树的JPEG,可能效果不佳。
同时强>
如果您希望更改 UITabBarItem
的图片,我发现您需要明确创建新标签栏项目。我通常会删除标签栏中的所有项目,并使用新图片构建所有新项目,如果我需要“更新”并将图像投放到UITabBarItem
。
因此,如果这是您的问题,我建议您在视图控制器中编写一个功能,并在上面的viewDidLoad
中,只需在您的控制器上调用该功能。
答案 2 :(得分:0)
我不确定原因,但您需要遵循相同代码的不同序列。首先将viewController添加到tabBar然后添加其图像。
class CustomTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let homeController = HomeController(collectionViewLayout: UICollectionViewFlowLayout())
let navigationController = UINavigationController(rootViewController: homeController)
//First do this
viewControllers = [homeController]
//Then add image
navigationController.tabBarItem.image = UIImage(named:"news_feed_icon")
}
}