在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://i.stack.imgur.com/GgUwN.png
所以预期的结果是:
答案 0 :(得分:3)
我找到了这个解决方案...... 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
}
答案 1 :(得分:1)
这段代码对我有用。
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。
-(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];
}
}
}