我正在尝试设计一个XLPagerTabStrip控件,该控件的总体主题随选项卡的更改而更改。
以下是选项卡更改时调用的内容
changeCurrentIndexProgressive = { [weak self] (oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in guard changeCurrentIndex == true else { return } oldCell?.label.textColor = .black newCell?.label.textColor = UIColor.red //Change the navigation bar's color self?.navigationController?.navigationBar.barTintColor = UIColor.red //Attempting to change the selected bar color self?.settings.style.selectedBarBackgroundColor = UIColor.green }
更改导航控制器的颜色是可行的,但是我无法在此处从中更改选定的栏(或设置对象下的任何东西)吗?
加载视图后,是否可以更改设置?
代码检查
如果您在代码搜索中搜索selectedBarBackgroundColor,那么您会发现以下3个有趣的搜索结果:
BaseButtonBarPagerTabStripViewController#viewDidLoad
buttonBarView.selectedBar.backgroundColor = settings.style.selectedBarBackgroundColor
BarPagerTabStripViewController#viewDidLoad
barView.selectedBar.backgroundColor = settings.style.selectedBarBackgroundColor ?? barView.selectedBar.backgroundColor
ButtonBarPagerTabStripViewController#viewDidLoad
buttonBarView.selectedBar.backgroundColor = settings.style.selectedBarBackgroundColor
这意味着您需要在viewDidLoad之前设置BackgroundColor。
问题
另请参见以下问题的答案:XLPagerTabStrip问题#137:
实际上,这不是问题。应该在调用viewDidLoad之前配置设置。您能在自述文件中进行记录吗?
解决方法
buttonBarView
是一个公共变量,也许您可以将其设置为直接设置此属性的附加设置: buttonBarView.selectedBar.backgroundColor