圆角在 iOS 12 及更低版本上运行良好,但在 iOS 13 上已损坏。我创建了一个自定义 Segment 控件类。
代码:
class SegmentedControl: UISegmentedControl {
override func layoutSubviews() {
super.layoutSubviews()
layer.cornerRadius = self.bounds.size.height / 2.0
layer.borderColor = UIColor(red: 170.0/255.0, green: 170.0/255.0, blue: 170.0/255.0, alpha: 1.0).cgColor
layer.borderWidth = 1.0
layer.masksToBounds = true
clipsToBounds = true
}
}
我已经浏览了这篇文章 - How to change the colors of a segment in a UISegmentedControl in iOS 13?
但我找不到任何解决方案。
截图:
最佳答案
我在 iOS 13 上遇到了同样的问题。然后我深入研究了它的 View 层次结构,然后我发现它有多个 subview 。所以我为 iOS 13 做了一个技巧。你必须对 iOS 13 做以下更改 -
selectedSegmentTintColor
至 Clear
- self.selectedSegmentTintColor = .clear
layoutSubviews
中添加以下代码片段——for i in 0...subviews.count - 1{
if let subview = subviews[i] as? UIImageView{
if i == self.selectedSegmentIndex {
subview.backgroundColor = UIColor(red: 170.0/255.0, green: 170.0/255.0, blue: 170.0/255.0, alpha: 1.0)
}else{
subview.backgroundColor = .clear
}
}
}
我希望它会帮助你。
关于ios - Segment Control 的 SelectedTintColor 在 iOS 13 上不是圆角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58315497/