Phi*_*hil 9 uisegmentedcontrol ios swift ios13
iOS 13对UISegmentedControl进行了一些更改,包括在切换所选段时非常漂亮的动画。但是,我注意到它没有backgroundColor
正确显示该属性,它似乎总是有点色彩。
我已经看到了问题,这个问题的答案如何设置selectedSegmentTintColor
等,但我挣扎,设置backgroundColor
地说.white
,不管我做什么,它总是显示了一个有点灰色的,即使没有tintColor
或应用类似的设置。将设置backgroundColor
为其他颜色可显示相同的行为,但用白色最为明显。更令人迷惑的是,虽然这种差异在iOS 13模拟器和运行iOS 13的物理设备上均会显示,但视觉调试器(在XCode 11 GM2中)却没有显示出这种差异!
这是一些屏幕截图,显示即使将backgroundColor
的UISegmentedControl
设置为与backgroundColor
后面显示的视图相同,也有些许不同。
运行iOS 13的设备(白色backgroundColor)
Visual Debugger中显示的视图/代码相同(白色backgroundColor)
运行iOS 13的设备(蓝色backgroundColor)
我已经尝试过按照backgroundImage
这篇SO文章中的建议使用的建议:UISegmentedControl iOS 13清除颜色,但是最终将样式恢复为在iOS 12中的外观,同时也会丢失漂亮的动画。
任何指导或建议,不胜感激!我还向Apple提交了错误报告,将看看是否有任何问题。
小智 18
我有同样的问题,没有很酷的方法来解决它。所以我做了这个小的解决方法。我不喜欢它,我并不以此为荣,但它确实有效。
func fixBackgroundSegmentControl( _ segmentControl: UISegmentedControl){
if #available(iOS 13.0, *) {
//just to be sure it is full loaded
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
for i in 0...(segmentControl.numberOfSegments-1) {
let backgroundSegmentView = segmentControl.subviews[i]
//it is not enogh changing the background color. It has some kind of shadow layer
backgroundSegmentView.isHidden = true
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
488 次 |
最近记录: |