gpt4 book ai didi

ios - 自定义 UITabBarController - DidSelect/AnyCustomization 委托(delegate)问题

转载 作者:行者123 更新时间:2023-11-29 05:24:20 24 4
gpt4 key购买 nike

我创建了自定义 TabBar 类,但我遇到了一些问题,例如,当选项卡隐藏时,如何从此类调用任何函数? (我想在隐藏标签栏时隐藏我的条纹)另外,当我使用 tabBarController?.selectedIndex = 3 时,委托(delegate) didSelect 未被调用,我该如何解决它?这是我的简单代码。感谢您的帮助

class customTabBar: UITabBarController {


var stripe = UIView()

override func viewDidLoad() {
super.viewDidLoad()

let cellWidth = tabBar.frame.width/5
stripe = UIView(frame: CGRect(x: 0, y: tabBar.frame.minY + 20, width: (tabBar.frame.width/5) * 0.6, height: 6))
stripe.center.x = cellWidth/2
stripe.applyGradient(colours: [UIColor.init(hexFromString: "5897ee"),UIColor.init(hexFromString: "5228d8")])
stripe.layer.cornerRadius = 2
stripe.layer.masksToBounds = true
self.view.addSubview(stripe)

}

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {

let index: Int = item.tag + 1
let cellWidth = tabBar.frame.width/5
let newPostion = cellWidth * CGFloat(index)

UIView.animate(withDuration: 0.3, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 0.3, options: .curveEaseInOut, animations: {

self.stripe.center.x = newPostion - (cellWidth/2)

})
}

}

最佳答案

class MyTabBarController: UITabBarController {

override func viewDidLoad() {
super.viewDidLoad()

//Add the stripe to tabBar,so it will hidden when tabBar hidden
let cellWidth = tabBar.frame.width/5
let stripe = UIView(frame: CGRect(x: 0, y: tabBar.frame.minY + 20, width: (tabBar.frame.width/5) * 0.6, height: 6))
stripe.center.x = cellWidth/2
stripe.layer.cornerRadius = 2
stripe.layer.masksToBounds = true
self.tabBar.addSubview(stripe)

}

//use this to observe tabBarController?.selectedIndex = 3
override var selectedIndex: Int{
didSet{
//do what you want
}
}
}

extension UIViewController {

//use this to call get MyTabBarController instance and call any function
var myTabBarcontroller : MyTabBarController?{
get{
return self.tabBarController as? MyTabBarController
}
}
}

关于ios - 自定义 UITabBarController - DidSelect/AnyCustomization 委托(delegate)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58352266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com