1

我正在尝试解决我一直在寻找但无法弄清楚的问题。我在UILabel控件内部有一个UIScrollView控件。我已将标签的高度设置scrollview为包含它的高度,现在我需要确定将填充标签的文本的正确高度(动态)。因此,只要scrollView高度是,标签内的文本高度就会匹配,宽度会扩大以防止文本被截断(如下图所示)。

我已经尝试过类似的东西sizeToFitconstrainedSize但我无法让它正常工作,关于如何实现这样的事情的任何方向?

在此处输入图像描述

4

3 回答 3

5

试试这个简单的代码,它可以帮助你

 UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
    label.backgroundColor=[UIColor clearColor];
    label.text= yourString;
    label.numberOfLines=0;
    label.adjustsFontSizeToFitWidth=YES;
    label.minimumFontSize=6;
    label.textAlignment=UITextAlignmentCenter;
    [self.View addSubview:label];

    CGFloat fontSize = 20;
    while (fontSize > 0.0)
    {
        CGSize size = [yourString sizeWithFont:[UIFont fontWithName:@"Rockwell-Bold" size:fontSize] constrainedToSize:CGSizeMake(label.frame.size.width, 10000) lineBreakMode:UILineBreakModeWordWrap];

        if (size.height <= label.frame.size.height) break;

        fontSize -= 1.0;
    }

    //set font size
    label.font = [UIFont fontWithName:@"Rockwell-Bold" size:fontSize];
    [label release];
于 2013-06-10T06:19:59.837 回答
1

adjustsFontSizeToFitWidth

在 Interface Builder 中,它是“调整为适合”复选框。

于 2013-06-10T03:55:58.360 回答
0

我注意到你想让文本填满全宽和全高。说服文本这样做可能很困难。无法直接设置文本的确切边界矩形。您只能将字体设置为磅值;它将以或多或少的固定纵横比缩放文本。

您应该能够使用标签的 transform 属性来实现您想要的。首先,构建一个固定大小的标签并选择一种字体,以便文本填满框架。(如果您的文本会有所不同,它会更复杂一些。使用[text sizeWithFont:font]以获得正确的大小,并从中设置标签框架。)

假设您的标签大小与滚动视图大小不匹配。例如,标签是 100x10,滚动视图是 200x15。如果您将标签的框架设置为 200x15,您将无法获得想要的效果。标签会变大,但其中的文本将保持相同大小。但是,如果你这样做

label.transform = CGAffineTransformMakeScale(2.0, 1.5);

那么您的整个标签及其内容将被拉伸。您可能还需要调整标签的中心属性以使其在父视图中正确定位。你需要让你的代码做一些计算才能每次都正确。

于 2013-06-10T04:08:38.863 回答