我正在努力解决一个我已经四处寻找但却无法弄清楚的问题。我在UILabel
控件中有一个UIScrollView
控件。我已将标签的高度设置为包含它的scrollview
的高度,现在我需要确定将填充标签的文本的正确高度(动态)。因此,只要scrollView
高度,标签内的文本高度将匹配,宽度将扩展以防止文本截断(如下图所示)。
我已尝试sizeToFit
,constrainedSize
之类的内容,但我无法正常使用,如何实现这样的目标?
答案 0 :(得分: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];
答案 1 :(得分:1)
adjustsFontSizeToFitWidth
在Interface Builder中,它是&#34;调整适合&#34;复选框。
答案 2 :(得分:0)
我注意到你想让文字填满整个宽度和全高。谈论文本可能很难做到这一点。无法直接设置文本的精确边界矩形。您只能将字体设置为磅值;它会以或多或少的固定宽高比缩放文本。
您应该能够通过标签的转换属性实现您想要的效果。首先,构建一个固定大小的标签并选择一种字体,以便文本填充框架。 (如果您的文字会有所不同,则会更复杂一点。使用[text sizeWithFont:font]
来获得正确的尺寸,并从中设置标签框。)
假设您的标签尺寸与滚动视图尺寸不符。例如。标签是100x10,滚动视图是200x15。如果将标签的框架设置为200x15,则无法获得所需的效果。标签会变大,但里面的文字会保持不变。但是,如果你这样做
label.transform = CGAffineTransformMakeScale(2.0, 1.5);
然后你的整个标签及其内容将被拉长。您可能还需要调整标签的center属性,使其在父视图中正确定位。您需要让代码进行一些计算以确保每次都正确。