如何在`swift`中设置`UISegmentControl`的borderColor?

时间:2016-12-22 02:32:21

标签: ios swift uisegmentedcontrol

enter image description here

在提出问题之前,我已经搜索了stackoverflow,找到了相关的帖子:

change segmentControl border color

但我们可以看到它是objective-c语言。

那么我们如何更改UISegmentControl中的swift的borderColor?

5 个答案:

答案 0 :(得分:0)

你真的必须将代码转换为swift ...

let customSegmentedControl = UISegmentedControl.appearance()    
customSegmentedControl.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.red], for: UIControlState.normal)

但我相信你发布的代码会改变字母的实际颜色,而不是外面的颜色。外面的颜色叫做“色调”,它改变如下:

customSegmentedControl.tintColor = UIColor.blue

编辑:仅用于更改边框

由于SegmentedControl中的每个细分都是实际的UIView,您可以直接访问它们,并根据您的需求对其进行自定义,如this answer

或者你可以设置我认为可以设置为你需要的颜色的“背景图像”。 (虽然上面的方法似乎不太复杂)

答案 1 :(得分:0)

我们可以设置背景图像以达到效果。

    let customSegmentedControl = UISegmentedControl.appearance()
    //customSegmentedControl.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.red], for: UIControlState.normal)

    customSegmentedControl.setBackgroundImage(UIImage.init(named: "ni2.png"), for: .normal, barMetrics: .default)
    customSegmentedControl.setBackgroundImage(UIImage.init(named: "ni.png"), for: .selected, barMetrics: .default)

答案 2 :(得分:0)

更简单的方法:

segmentControl.layer.borderWidth = 1.0
segmentControl.layer.cornerRadius = 5.0
segmentControl.layer.borderColor = UIColor.red.cgColor
segmentControl.layer.masksToBounds = true

答案 3 :(得分:0)

添加插座

@IBOutlet weak var customSegment: UISegmentedControl!

然后在您的 viewDidload 方法中

    customSegment.layer.borderWidth = 1.0
    customSegment.layer.cornerRadius = 5.0
    customSegment.layer.borderColor = UIColor.red.cgColor
    customSegment.layer.masksToBounds = true

enter image description here

答案 4 :(得分:-1)

self.segementControl.layer.borderWidth = 0.3
self.segementControl.layer.cornerRadius = 3.0
self.segementControl.layer.borderColor = UIColor.orange.cgColor