使用Tabbar ios Swift

问题描述 投票:0回答:2

我正在使用Swift 4工作UITabBar,我想要选择和未选择选项卡的不同图标。

UITabBar只改变tintColor,我无法为选定和未选择的选项卡设置不同的图像。

因此,如果可以为选定和未选择的标签设置不同的图标,请告诉我。

这是我尝试过的:

let item1 = self.storyboard?.instantiateViewController(withIdentifier: "DashboardViewController")
let icon1 = UITabBarItem(title: "", image: UIImage(named: "first_unselected"), selectedImage: UIImage(named: "first_selected"))
item1?.tabBarItem = icon1
ios swift tabbar
2个回答
1
投票

问题不在于你如何创建一个UITabBarItem - 我已经测试了它并且它有效。所以我猜问题是你设置它的地方:

let item1 = self.storyboard?.instantiateViewController(withIdentifier: "DashboardViewController")

你必须意识到这行代码将创建一个DashboardViewController的新实例,它不是屏幕上显示的实例。因此,除非某个地方以后你提出item1,当然这些代码行不会对屏幕产生任何影响。

您要做的是配置屏幕上显示的实例(由故事板自动加载的实例)。我认为最好和最简单的方法是将配置代码添加到DashboardViewController的初始化器中 - 这样,DashboardViewController的任何实例都将正常运行 - 所以屏幕上也会出现这种情况。

以下面的代码为例:

import UIKit

class DashboardViewController: UIViewController {

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)

        initialize()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        initialize()
    }

    func initialize() {
        let icon1 = UITabBarItem(title: "", image: #imageLiteral(resourceName: "first_unselected"), selectedImage: #imageLiteral(resourceName: "first_selected"))
        self.tabBarItem = icon1
    }
}

0
投票

根据文档,您应该在UITabBarItem中使用selectedImage属性。

  let tabBarButton = UITabBarItem(title: "", image: 
  UIImage(named:"image"))
  tabBarButton.selectedImage: UIImage(named: "selected_image")

默认情况下,将根据源图像中的Alpha值自动>创建实际未选择和选定的图像。要防止系统>着色,请使用alwaysOriginal提供图像。

© www.soinside.com 2019 - 2024. All rights reserved.