How to change font color of UISegmentedControl

前端 未结 12 1338
广开言路
广开言路 2020-12-04 16:30

I try to change font color from white to black for UISegmentedControl (for iOS 4.*)

UISegmentedControl *button = [[[UISegmentedControl alloc] in         


        
12条回答
  •  没有蜡笔的小新
    2020-12-04 17:04

    Im using monotouch. Dont know why, but when View was pushed text color doesnt changed for me. for solve this im just add labels to segment control superview and then change their colours:

    public static void SetColoredTittles(this UISegmentedControl s, string[] titles, UIColor selected, UIColor notSelected)
    { 
        var segmentedLabels = new List();
        float width = s.Frame.Width/titles.Length;
    
        for (int i = 0; i < titles.Length; i++)
        {
            var frame = new RectangleF(s.Frame.X + i*width, s.Frame.Y, width,s.Frame.Height);
            UILabel label = new UILabel(frame);
            label.TextAlignment = UITextAlignment.Center;
            label.BackgroundColor = UIColor.Clear;
            label.Font = UIFont.BoldSystemFontOfSize(12f);
            label.Text = titles[i];
            s.Superview.AddSubview(label);
            segmentedLabels.Add(label);
        }
    
        s.ValueChanged += delegate
        {
            TextColorChange(s,segmentedLabels, selected, notSelected);
        };
        TextColorChange(s,segmentedLabels, selected, notSelected);
    }
    
    static void TextColorChange(UISegmentedControl s, List segmentedLabels, UIColor selected, UIColor notSelected)
    {
        for (int i = 0; i < segmentedLabels.Count; i++)
        {
            if(i == s.SelectedSegment) segmentedLabels[i].TextColor = selected;
            else segmentedLabels[i].TextColor = notSelected;
        }
    }
    

    and then use it

    segmented.SetColoredTittles(new string[] {
                "text1",
                "text2",
                "text3"
            }, UIColor.White,UIColor.DarkGray);
    

提交回复
热议问题