1

有没有一种简单的方法,例如我的 UISegmentedControl 中的每个项目都有多行文本?

谢谢。

附言。我还检查了没有简单的方法可以更改 UISegmentedControl 的高度吗?在代码中说?将样式更改为“Bar”不适合我,setFrame在我的情况下似乎也不起作用...... :((

pps。这是我尝试过的 Siba 推荐的方法,但仍然存在一些问题。

for (id segment in [segmentedControl subviews])
    {
        for (id label in [segment subviews])
        {
            if ([label isKindOfClass:[UILabel class]])
            {
                UILabel *label2 = label;
                //hear u add any of delegate function to increase the height and other label functionality in this
                [label2 setTextAlignment:UITextAlignmentCenter];
                [label2 setFont:[UIFont boldSystemFontOfSize:12]];
                //to adjust the label size manually with respect to text use below code
                CGSize labelSize = CGSizeMake(100, 80);
                CGSize theStringSize = [label2.text sizeWithFont:label2.font constrainedToSize:labelSize];
                CGRect frame = label2.frame;
                frame.size = theStringSize;
                label2.lineBreakMode = UILineBreakModeWordWrap;
                label2.numberOfLines = 0;

                [label2 setText:@"text \n 10%"];

            }
        }           
    }
4

1 回答 1

0

1.您可以尝试以下方法。

  • 创建多行 UILabel
  • 用 N 行文本填充标签
  • 将标签转换为 UIImage
  • 将图像设置为分段内容

就像在这个答案中完成的一样: UISegmentedControl 多行文本?

2.您可以ImageView在Segmented Control的后面使用相同的帧并根据SelectedSegmentedIndex更改图像,如下所示。

但不要忘记设置为AlphaAt ViewDidLoad。SegmentedControl0.05.

segment_Control.alpha=0.05;

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

编码将是这样的。

- (IBAction)segmented_Changed:(id)sender {

    if (segmented_control.selectedSegmentIndex==0) {

        segment_image.image=[UIImage imageNamed:@"tab_Act1.png"];

    }else
        if (segmented_control.selectedSegmentIndex==2) {
            segment_image.image=[UIImage imageNamed:@"tab_Act3.png"];

        }
        else if (segmented_control.selectedSegmentIndex==1) {

            segment_image.image=[UIImage imageNamed:@"tab_Act2.png"];

        }
}

3.你也可以试试这个:

for (id segment in [segmentedControl subviews]) 
{
    for (id label in [segment subviews]) 
    {
        if ([label isKindOfClass:[UILabel class]])
        {
            //hear u add any of delegate function to increase the height and other label functionality in this 
            [label setTextAlignment:UITextAlignmentCenter];
            [label setFont:[UIFont boldSystemFontOfSize:12]];
//to adjust the label size manually with respect to text use below code
  CGSize labelSize = CGSizeMake(100, 80);
  CGSize theStringSize = [label.text sizeWithFont:label.font constrainedToSize:labelSize];
  CGRect frame = label.frame;
  frame.size = theStringSize; 

        }
    }           
}

来源: UIsegment 控件上的多行文本

于 2012-12-18T10:42:24.653 回答