我知道很多人问了这个问题,但是没有任何帮助。我的controller1从情节提要中展示了一个新的controller2。 Controler1的背景颜色为黑色。我自定义的segmentcontrol背景色和selectedTintColor效果很好,但始终总是先显示黑色背景色。我尝试了所有方法,但没有工作。在情节提要和代码中,所有这些都不是黑色。谢谢!
override func viewDidLoad() {
let bgColor = uIColor. // my customized color)
segmentControl.backgroundColor = bgColor
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
connectionSegmentControl.selectedSegmentIndex = 0
toggleSegmentTintColor()
}
private func toggleSegmentTintColor() {
// I set my customized selected tint color here, it works.
}
如果您在viewDidAppear中执行此操作,则为时已晚:视图已显示在屏幕上。破解方法是在viewDidlaod或viewWillAppear中。正确的方法是在应用启动时使用UIAppearance代理为全局设置对象的颜色:
UISegmentedControl.appearance().tintColor = UIColor.clear
您还可以通过在根窗口上设置整个应用程序的颜色来设置其颜色,但它不仅会影响分段控件。