setEnabled 为 UISegmentedControl 没有不同的样式
setEnabled for UISegmentedControl without styling differently
我正在使用 Swift 4,我想在演示期间禁用 UISegmentedControl
,但我不希望它在发生这种情况时采用不同的样式。例如,我的 UISegmentedControl
称为 saveAsControl
,我禁用了一个段:
self.saveAsControl.setEnabled(false, forSegmentAt: 0)
但是当这种情况发生时,我不希望它改变外观。
extension UISegmentedControl {
func setUserInteractionEnabled(_ enabled: Bool, forSegmentAt segment: Int) {
if subviews.indices.contains(segment) {
subviews[segment].isUserInteractionEnabled = enabled
}
}
}
segmentedControl.setUserInteractionEnabled(false, forSegmentAt: 0)
您可以使用扩展程序。或者,您可以使用简单的一行代码解决此问题,该代码将禁用段的文本颜色设置为 segmentedControl
:
的默认 tintColor
let segmentItems = ["one", "two", "three"]
let mySegmentedControl = UISegmentedControl(items: segmentItems)
UISegmentedControl.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor:mySegmentedControl.tintColor], for: .disabled)
mySegmentedControl.setEnabled(false, forSegmentAt: 0)
确保您使用的是 UISegmentedControl
而不是 mySegmentedControl
因为 appearance()
是 UISegmentedControl
class.[=18= 的静态方法]
这是我在操场上 运行 时的代码截图:
我正在使用 Swift 4,我想在演示期间禁用 UISegmentedControl
,但我不希望它在发生这种情况时采用不同的样式。例如,我的 UISegmentedControl
称为 saveAsControl
,我禁用了一个段:
self.saveAsControl.setEnabled(false, forSegmentAt: 0)
但是当这种情况发生时,我不希望它改变外观。
extension UISegmentedControl {
func setUserInteractionEnabled(_ enabled: Bool, forSegmentAt segment: Int) {
if subviews.indices.contains(segment) {
subviews[segment].isUserInteractionEnabled = enabled
}
}
}
segmentedControl.setUserInteractionEnabled(false, forSegmentAt: 0)
您可以使用扩展程序。或者,您可以使用简单的一行代码解决此问题,该代码将禁用段的文本颜色设置为 segmentedControl
:
tintColor
let segmentItems = ["one", "two", "three"]
let mySegmentedControl = UISegmentedControl(items: segmentItems)
UISegmentedControl.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor:mySegmentedControl.tintColor], for: .disabled)
mySegmentedControl.setEnabled(false, forSegmentAt: 0)
确保您使用的是 UISegmentedControl
而不是 mySegmentedControl
因为 appearance()
是 UISegmentedControl
class.[=18= 的静态方法]
这是我在操场上 运行 时的代码截图: