在我的项目中,有UILabel
个文字。字体大小为16pt。文本内容根据不同情况而变化。我希望它可以自动调整UILabel
的宽度以适应文本的总宽度而不拉伸。
有可能吗?
答案 0 :(得分:109)
这假设您已经设置了字体:
label.text = @"some text";
[label sizeToFit];
您还需要定义最大宽度,并告诉您的程序如果sizeToFit为您提供的宽度大于该最大值,该如何处理。
答案 1 :(得分:21)
以下是如何操作,假设以下messageLabel
是您希望获得所需效果的标签。现在,尝试这些简单的代码行:
// Set width constraint for label; it's actually the width of your UILabel
CGFloat constrainedWidth = 240.0f;
// Calculate space for the specified string
CGSize sizeOfText = [yourText sizeWithFont:yourFont constrainedToSize:CGSizeMake(constrainedWidth, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap];
UILabel *messageLabel = [[UILabel alloc] initWithFrame:CGRectMake(20,20,constrainedWidth,sizeOfText.height)];
messageLabel.text = yourText;
messageLabel.numberOfLines = 0;// This will make the label multiline
答案 2 :(得分:12)
NSString *txt1=@"I am here.";
CGSize stringsize1 = [txt1 sizeWithFont:[UIFont systemFontOfSize:14]];
[label setFrame:CGRectMake(x,y,stringsize1.width,hieght)];
[label setText:txt1];
答案 3 :(得分:7)
我在这里看到三个选项。
首先,使标签的大小足以容纳任何文本。这是最简单的,但并不总是运作良好 - 取决于其周围的观点。
其次,Label可以根据较长的文本(adjustsFontSizeToFitWidth
属性)调整字体的大小。这通常是不可取的,元素中的不同字体可能看起来很难看。
最后一个选项是根据当前保留的文本以编程方式调整标签大小。要计算用当前字体保存文本所需的大小,请使用以下内容:
CGSize textSize = [[someLabel text] sizeWithFont:[someLabel font] forWidth:someLabel.bounds.size.width lineBreakMode:UILineBreakModeWordWrap];
答案 4 :(得分:2)
如果您已经设置了字体及其大小,并且已定义了框架,请尝试使用以下两种常见条件:
if (label.text.length > maxCharPerLine) [label setNumberOfLines:0]; // infinite lines
else [label setNumberOfLines:1]; // one line only
// Adjust your font size to fit your desired width.
[label setAdjustsFontSizeToFitWidth:YES];
答案 5 :(得分:1)
按照这个。
CGSize stringsize = [yourString sizeWithFont:[UIFont systemFontOfSize:fontSize]];
[label setFrame:CGRectMake(x,y,stringsize.width,height)];
[label setText: yourString];
答案 6 :(得分:1)
由于sizeWithFont在IOS 7.0中被折旧,因此您在代码
下面#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
// code here for iOS 5.0,6.0 and so on
CGSize fontSize = [itemCat_text sizeWithFont:[UIFont fontWithName:@"Helvetica" size:12]];
} else {
// code here for iOS 7.0
fontSize = [itemCat_text sizeWithAttributes:
@{NSFontAttributeName:
[UIFont fontWithName:@"Helvetica" size:12]}];
}
答案 7 :(得分:1)