尝试为 UISegmentedControl 中的每个段设置不同的文本颜色

问题描述

我很乐意提供帮助。

我知道如何使用attributedString 更改选定状态的文本,但我找不到为每个段设置唯一文本颜色(甚至背景颜色)的方法

知道怎么做吗?

解决方法

要为所选段创建唯一的背景颜色,您需要为 UISegmentControl 创建操作,然后根据索引设置颜色。

@IBAction func segmentChanged(_ sender: UISegmentedControl) {
        if sender.selectedSegmentIndex == 0 {
            sender.selectedSegmentTintColor = UIColor.red
        } else {
            sender.selectedSegmentTintColor = UIColor.blue
        }
    }

编辑:

所以你可以尝试像这样处理 UISegmentControl 的子视图:

@IBOutlet weak var segment: UISegmentedControl! {
        didSet {
            for (index,view) in segment.subviews.enumerated() {
                if index == 0 {
                    view.subviews.forEach{ label in
                        (label as! UILabel).textColor = UIColor.red
                    }
                } else {
                    view.subviews.forEach{ label in
                        (label as! UILabel).textColor = UIColor.blue
                    }
                }
            }
        }
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...