我目前在我的VC中有一个uisegmentedcontrol元素,并设法通过以下线程删除边框。虽然它工作正常,一旦选择uisegmentedcontrol部分变成完全白色,包括图标,有什么办法可以修改它?因此,所选部分的背景将是我指定的任何颜色,图标变为白色。提前感谢任何可能提供帮助的人。
答案 0 :(得分:3)
这是您可以在UISegmentControl
extension UISegmentedControl{
func removeBorders() {
setBackgroundImage(imageWithColor(color: .clear), for: .normal, barMetrics: .default)
setBackgroundImage(imageWithColor(color: .gray), for: .selected, barMetrics: .default)
setDividerImage(imageWithColor(color: UIColor.clear), forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
}
// create a 1x1 image with this color
private func imageWithColor(color: UIColor) -> UIImage {
let rect = CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
context!.setFillColor(color.cgColor);
context!.fill(rect);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image!
}
}
正如您在removeBorders
函数中看到的那样,您正在根据normal
和selected
状态的颜色设置背景图像。所以在这里你可以使用你喜欢的任何颜色。