iOS 13对UISegmentedControl做了一些修改,包括切换所选片段时的动画效果非常好。不过我注意到backgroundColor
属性显示不正确,它似乎总是带有一点色彩。
我看到过一些问题,可以回答如何设置selectedSegmentTintColor
等问题,但我很难将backgroundColor
设置为.white
,无论我做什么,它总是显示一点灰色,即使没有tintColor
或类似的设置应用。设置backgroundColor
到其他颜色显示相同的行为,但它最明显的白色。更令人费解的是,虽然这种差异在iOS 13模拟器和运行iOS 13的物理设备上都显示出来,但可视化调试器(XCode 11 GM 2中)却没有显示这种差异!
这里有几个屏幕截图,显示即使UISegmentedControl
的backgroundColor
设置为与后面显示的视图的backgroundColor
相同,它们也略有不同。
运行iOS 13的设备(白色背景彩色)x1c 0d1x
可视化调试器中显示的视图/代码相同(白色背景色)
运行iOS 13的设备(蓝色背景色)
我已经尝试了应用backgroundImage
的建议,如这篇SO帖子中所建议的:UISegmentedControl iOS 13 clear color,但这最终会将风格恢复到iOS 12中的样子,你也会失去漂亮的动画。
任何指导或建议都非常感谢!我也向苹果提交了一份错误报告,看看是否有什么结果。
7条答案
按热度按时间ldxq2e6h1#
我也有同样的问题,但没有很酷的方法来解决它。所以我做了这个小的变通办法。我不喜欢它,我也不为此感到自豪,但它的工作。
k10s72fa2#
我找到了最简单的解决办法。
fjaof16o3#
为我工作(斯威夫特5)。
bmvo0sr54#
SWIFT 3和4+
从这个答案https://stackoverflow.com/a/31652184/3249196,如果你想要一个没有灰色覆盖的全白色背景,只需将
tintColor
和backgroundColor
替换为UIColor.white
4zcjmb1e5#
可接受的答案可以简化,我们可以通过子类化
UISegmentedControl
并重写layoutSubviews
方法来避免使用DispatchQueue.main.async
调用:blpfk2vs6#
我完成了前一个答案的代码,一切都为我工作
}
Modified Segmented Control
dfuffjeb7#
在Xamarin.iOS中,这对我很有效: