UISegmentedControl边界/突出状态

时间:2017-05-21 17:06:10

标签: ios swift xcode uisegmentedcontrol

This is the image of my current segmented control, the 2nd section is currently selected.

我目前在我的VC中有一个uisegmentedcontrol元素,并设法通过以下线程删除边框。虽然它工作正常,一旦选择uisegmentedcontrol部分变成完全白色,包括图标,有什么办法可以修改它?因此,所选部分的背景将是我指定的任何颜色,图标变为白色。提前感谢任何可能提供帮助的人。

提到的帖子: Swift: How to remove border from segmented control

1 个答案:

答案 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函数中看到的那样,您正在根据normalselected状态的颜色设置背景图像。所以在这里你可以使用你喜欢的任何颜色。