使用标签栏 ios Swift
Working with Tabbar ios Swift
我正在使用 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
问题不在于您创建 UITabBarItem
的方式 - 我已经对其进行了测试并且它有效。所以我想问题出在你设置它的地方:
let item1 = self.storyboard?.instantiateViewController(withIdentifier: "DashboardViewController")
您必须意识到,这行代码将创建 DashboardViewController
的 NEW 实例,这不是屏幕上显示的实例。因此,除非您稍后在某个地方出现 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
}
}
根据文档,您应该在 UITabBarItem 中使用 selectedImage 属性。
let tabBarButton = UITabBarItem(title: "", image:
UIImage(named:"image"))
tabBarButton.selectedImage: UIImage(named: "selected_image")
By default, the actual unselected and selected images are automatically >created from the alpha values in the source images. To prevent system >coloring, provide images with alwaysOriginal.
我正在使用 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
问题不在于您创建 UITabBarItem
的方式 - 我已经对其进行了测试并且它有效。所以我想问题出在你设置它的地方:
let item1 = self.storyboard?.instantiateViewController(withIdentifier: "DashboardViewController")
您必须意识到,这行代码将创建 DashboardViewController
的 NEW 实例,这不是屏幕上显示的实例。因此,除非您稍后在某个地方出现 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
}
}
根据文档,您应该在 UITabBarItem 中使用 selectedImage 属性。
let tabBarButton = UITabBarItem(title: "", image:
UIImage(named:"image"))
tabBarButton.selectedImage: UIImage(named: "selected_image")
By default, the actual unselected and selected images are automatically >created from the alpha values in the source images. To prevent system >coloring, provide images with alwaysOriginal.