iOS - 更改UISegmentedControl中每个段的文本字体

时间:2013-12-01 17:32:19

标签: ios objective-c uisegmentedcontrol

我得到了一个名为mySegmentedControl的UISegmentedControl

@property (nonatomic) IBOutlet UISegmentedControl *mySegmentedControl;

有3个段,我会更改每个段的文本字体..可能吗?

5 个答案:

答案 0 :(得分:1)

是的,你可以-----试试这个

for(uint i=0;i<[mySegmentedControl subviews].count;i++)
{
    for(UIView *view in [[[mySegmentedControl subviews] objectAtIndex:i] subviews])
    {
        if([view isKindOfClass:[UILabel class]])
        {
            if(i==0)  // set First segment font
                [(UILabel*)view setFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:27]];

            if(i==1)  // set Second segment font
                [(UILabel*)view setFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:17]];

            if(i==2)  // set Third segment font
                [(UILabel*)view setFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:7]];
        }
    }
}

答案 1 :(得分:0)

我认为这是不可能的。您唯一的选择是使用自定义开源实现,或使用每个段的文本设置自定义图像。

答案 2 :(得分:0)

您可以使用任何图片而不是文字。这将为您提供灵活的外观定制。

NSArray *segemtImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"1st.png"],[UIImage imageNamed:@"2nd.png"],[UIImage imageNamed:@"3rd.png"], nil];
UISegmentedControl *segmentControl = [[UISegmentedControl alloc] initWithItems:segemtImages];

答案 3 :(得分:0)

我修改了@Anand Natan的代码: 在故事板中设置第一个标签&#34; 1111111111111&#34;是改变它的默认宽度。因为更改标签不会改变segmentcontroll的大小。

    for(uint i=0;i<[_menuBarTop subviews].count;i++){
        for(uint j=0;j<[[[[_menuBarTop subviews] objectAtIndex:i] subviews]count];j++){
            UIView* view = [[[_menuBarTop subviews] objectAtIndex:i] subviews][j];
            if([view isKindOfClass:[UILabel class]]){
                UILabel* label = (UILabel*)view;
                if([label.text isEqualToString:@"1111111111111"]){
                    label.text = LANGLOC(@"videolist_category_choosen");
                }else if([label.text isEqualToString:@"2"]){
                    label.text = LANGLOC(@"videolist_category_followed");
                }
                break;
            }
        }
    }

答案 4 :(得分:-1)

NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:12], NSFontAttributeName, nil];
[_sgmntStatusUI setTitleTextAttributes:textAttributes forState:UIControlStateNormal];

for ios7稍后的游离