我正在尝试解决我一直在寻找但无法弄清楚的问题。我在UILabel
控件内部有一个UIScrollView
控件。我已将标签的高度设置scrollview
为包含它的高度,现在我需要确定将填充标签的文本的正确高度(动态)。因此,只要scrollView
高度是,标签内的文本高度就会匹配,宽度会扩大以防止文本被截断(如下图所示)。
我已经尝试过类似的东西sizeToFit
,constrainedSize
但我无法让它正常工作,关于如何实现这样的事情的任何方向?
试试这个简单的代码,它可以帮助你
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];
adjustsFontSizeToFitWidth
在 Interface Builder 中,它是“调整为适合”复选框。
我注意到你想让文本填满全宽和全高。说服文本这样做可能很困难。无法直接设置文本的确切边界矩形。您只能将字体设置为磅值;它将以或多或少的固定纵横比缩放文本。
您应该能够使用标签的 transform 属性来实现您想要的。首先,构建一个固定大小的标签并选择一种字体,以便文本填满框架。(如果您的文本会有所不同,它会更复杂一些。使用[text sizeWithFont:font]
以获得正确的大小,并从中设置标签框架。)
假设您的标签大小与滚动视图大小不匹配。例如,标签是 100x10,滚动视图是 200x15。如果您将标签的框架设置为 200x15,您将无法获得想要的效果。标签会变大,但其中的文本将保持相同大小。但是,如果你这样做
label.transform = CGAffineTransformMakeScale(2.0, 1.5);
那么您的整个标签及其内容将被拉伸。您可能还需要调整标签的中心属性以使其在父视图中正确定位。你需要让你的代码做一些计算才能每次都正确。