Swift 在Tabbar控制器上隐藏图像
我有这样一个选项卡栏: 中间按钮只是添加到tabBarController子类中的UIImage,如下所示:Swift 在Tabbar控制器上隐藏图像,swift,image,tabbar,Swift,Image,Tabbar,我有这样一个选项卡栏: 中间按钮只是添加到tabBarController子类中的UIImage,如下所示: class TabBarDelegate: UITabBarController { let button = UIImageView() override func viewDidLoad() { super.viewDidLoad() delegate = self self.tabBar.unselectedIt
class TabBarDelegate: UITabBarController {
let button = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
delegate = self
self.tabBar.unselectedItemTintColor = #colorLiteral(red: 0.6666666865, green: 0.6666666865, blue: 0.6666666865, alpha: 1)
button.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
button.image = UIImage(named: "tabBarAdd")
button.setImageColor(color: #colorLiteral(red: 0.184496969, green: 0.6701939702, blue: 0.3898918033, alpha: 1))
let imageView = UIImageView()
imageView.image = UIImage(named: "tabBarAdd")
imageView.bounds = CGRect(x: button.frame.origin.x, y: button.frame.origin.y, width: button.frame.width, height: button.frame.height)
self.view.insertSubview(button, aboveSubview: self.tabBar)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
button.frame = CGRect.init(x: self.tabBar.center.x - 17.5, y: self.view.bounds.height - 80, width: 35, height: 35)
button.layer.cornerRadius = 17.5
}
}
我的图像当前颜色不正确,因此我正在使用扩展来更改颜色,这是代码中的按钮。setImageColor(color:)
函数
当我按下中间的按钮时,它工作正常,触摸只是通过图像进入tabBarItem
我想做的是在过渡到中间视图控制器时隐藏图像。
我已经尝试在正在出现的viewController中使用viewdideappease()
函数。我使用了以下代码:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let tabBarD = TabBarDelegate()
tabBarD.button.isHidden = true
}
但这不起作用。我还尝试完全使用tabBarD.button.removeFromSuperview()
从superview中删除图像,但即使这样也不起作用
我想要任何想法和帮助
提前感谢:)在您的
视图中出现了middleViewController
方法,您实际上正在初始化一个新的TabBarController
,这就是为什么它不能按您想要的方式工作
删除该代码,并将两种方法添加到tabBarController
中的基本ViewControllers
,视图将消失
,和视图将出现
:
func viewWillDisappear(_ animated: Bool) {
super.viewWilDisappear(animated)
if let tabBarController = self.tabBarController as? TabBarDelegate {
tabBarController.button.isHidden = true
}
}
func viewWillAppear(_ animated: Bool) {
super.viewWilAppear(animated)
if let tabBarController = self.tabBarController as? TabBarDelegate {
tabBarController.button.isHidden = false
}
}
因此,每次您将转到另一个viewController(可能是detail viewController,从tabBarController的基本控制器,当其中一个baseViewController的视图将消失时将其隐藏,然后,如果视图将再次出现,则将其再次显示。我明白了
感谢emrepun,他让我开始以不同的方式思考如何解决这个问题
我最终使用了委托方法的扩展,如下所示:
extension TabBarDelegate: UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if viewController.hidesBottomBarWhenPushed {
self.button.isHidden = true
}
return true
}
}
而且,由于我在从故事板中推出
方法时使用了隐藏底部条形图,这就奏效了
感谢您抽出时间很抱歉,此操作不起作用。选项卡栏没有调用viewWillAppear和English方法。当viewWillAppear和Englishe方法显示在middleViewController中的MiddleViewControllerry上时,请更新控制器中的viewWillAppear方法,无论您在何处编写该方法作为我的实现。然后添加viewWillAppear,并将其隐藏为我的实现也为您的middleViewController执行了。此方法看起来不错,很高兴我能提供帮助:)