【问题标题】:Multiple lines of text in UISegmentedControlUISegmentedControl 中的多行文本
【发布时间】:2012-12-18 10:20:04
【问题描述】:

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

谢谢。

ps。我还检查过没有简单的方法可以更改 UISegmentedControl 的高度吗? 在代码中说?将样式更改为“酒吧”不适合我,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%"];

            }
        }           
    }

【问题讨论】:

标签: ios


【解决方案1】:

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

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

就像在This Answer 中完成的一样: UISegmentedControl text with multiple lines?

2.您可以在Segmented Control的背面拍摄一个ImageView,并根据SelectedSegmentedIndex更改图像,如下所示。

但不要忘记在 ViewDidLoad 处将 AlphaSegmentedControl 设置为 0.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; 

        }
    }           
}

Source :Multiline Text On UIsegment Control

【讨论】:

  • 嗨,Siba。这仍然行不通。第一个问题是我仍然无法显示两行文本,第二个问题是,当用户单击 UISegmentedControl 时,它会调整大小。这个怎么处理??附言。这是我使用的代码:(由于某些原因我无法在此处添加代码,我将修改并添加代码到我的问题中,以便您可以看到它)。谢谢。
  • 那么最好的方法是创建 3 个图像(如果你有 3 个段),这些图像因所选索引而异,并将这些图像作为分段控制的背景。并将分段控制置于顶部并设置 Alpha 0.05;请参阅我的更新答案和附加图片。
  • 还有问题吗?
  • 嗨,Siba,对不起 - 我会检查一下我已经开始做其他事情了,当我回到这个时我会告诉你。谢谢。
  • 没问题。试试这个(特别是第二种方法),让我知道它是否有效。
猜你喜欢
  • 2011-08-02
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多