更改UISegmentedControl中特定段的标题文本颜色?

时间:2018-12-04 22:31:57

标签: ios iphone uikit uisegmentedcontrol

如何更改UISegmentedControl的一个特定段的文本颜色?我想让它们保持所有正常状态,除了一个特定的段,该段应该是不同的颜色,无论是否选中。

5 个答案:

答案 0 :(得分:1)

@IBDesignable
    class DesignableSegmentControl: UISegmentedControl{
    }
    extension UISegmentedControl{
        @IBInspectable
        var textColor: UIColor{
            get {
                return self.textColor
            }
            set {
                let unselectedAttributes = [NSAttributedString.Key.foregroundColor: newValue,
                                            NSAttributedString.Key.font:  UIFont.systemFont(ofSize: 13, weight: UIFont.Weight.regular)]
                self.setTitleTextAttributes(unselectedAttributes, for: .normal)
                self.setTitleTextAttributes(unselectedAttributes, for: .selected)
            }
        }
    }

只需更改细分控件的类名,如下所示:

[更改类别名称]:
enter image description here

[更改文字颜色]:
enter image description here

答案 1 :(得分:1)

快速5

public class PhotoMekanik implements Serializable {
    @SerializedName("machineid")
    private String machineid;
    @SerializedName("mekanik")
    private String mekanik;
    @SerializedName("trans_id")
    private String trans_id;

    public PhotoMekanik(String machineid, String mekanik, String trans_id) {
        this.machineid = machineid;
        this.mekanik = mekanik;
        this.trans_id = trans_id;
    }

    public String getMachineid() {
        return machineid;
    }

    public void setMachineid(String machineid) {
        this.machineid = machineid;
    }

    public String getMekanik() {
        return mekanik;
    }

    public void setMekanik(String mekanik) {
        this.mekanik = mekanik;
    }

    public String getTrans_id() {
        return trans_id;
    }

    public void setTrans_id(String trans_id) {
        this.trans_id = trans_id;
    }
}

答案 2 :(得分:0)

没有任何内置方法;您可能已经发现,setTitleTextAttributes适用于所有细分。您将不得不将文本绘制为图像,并使用它。

答案 3 :(得分:0)

更新了Swift 4.1

UISegmentedControl.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.red], for: .selected)

Swift 3.1

UISegmentedControl.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red as Any], for: .selected)

早期的Swift版本:

UISegmentedControl.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red], for: .selected)

答案 4 :(得分:-1)

您可以实现自己的分段控件以进行自定义。

  1. 添加两个具有与分段控件相同的UI的按钮。
  2. 拐角处。
  3. 单击即可根据需要设置背景色,并清除其他背景色,使其未被选中。

通过这种方式,可以进行很大范围的定制。 GitHub上还有许多自定义的分段控件。 你可以试试这个

https://github.com/gmarm/BetterSegmentedControl