0

我正在以编程方式在表格单元格单击的详细视图中创建标签。我正在相应地设置文本并为此设置标签高度。这是我的代码:

NSString *mytitleString = [discussionData valueForKey:@"Name"];
 CGSize size =  [mytitleString sizeWithFont:[UIFont systemFontOfSize:14.0]  constrainedToSize:CGSizeMake(500, CGFLOAT_MAX)];
 float lbltitleheight = size.height;
 lbltitle.text = mytitleString;

但问题是如果标签是多行,我无法设置标签的高度。我如何实现这一目标?

4

9 回答 9

2

请试试这个:

CGFloat height=[mytitleString sizeWithFont:[UIFont fontWithName:@"Arial" size:14] constrainedToSize:CGSizeMake(500, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap].height;

希望这会帮助你。

于 2013-08-08T10:17:49.597 回答
2

你也可以使用

label.numberOfLines = 0; // allows label to have as many lines as needed
label.text = @"some long text";
[label sizeToFit];
NSLog(@"Label's frame is: %@", NSStringFromCGRect(label.frame));

其中大小将相应调整。

或者您只需增加UILabel Dynamically的高度。这sizeWithFont constrainedToSize:lineBreakMode:是使用的方法。

//Calculate the expected size based on the font and linebreak mode of your label
// FLT_MAX here simply means no constraint in height
CGSize maximumLabelSize = CGSizeMake(296, FLT_MAX);

CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font constrainedToSize:maximumLabelSize lineBreakMode:yourLabel.lineBreakMode];   

//adjust the label the the new height.
CGRect newFrame = yourLabel.frame;
newFrame.size.height = expectedLabelSize.height;
yourLabel.frame = newFrame;
于 2013-08-08T10:10:30.077 回答
2

为什么不能设置标签大小?您是否尝试将标签设置为多行:

NSString *mytitleString = [discussionData valueForKey:@"Name"];
CGSize size =  [mytitleString sizeWithFont:[UIFont systemFontOfSize:14.0]  
                         constrainedToSize:CGSizeMake(500, CGFLOAT_MAX) 
                             lineBreakMode:lbltitle.lineBreakMode];
lbltitle.frame = (CGRect){.oririn = lbltitle.frame.origin, .size = size};
lbltitle.numberOfLines = 0;
lbltitle.text = mytitleString;

我也建议不要使用 method sizeToFit,因为当您多次调用它时 - 标签可能会变得太窄。

于 2013-08-08T10:10:49.210 回答
1
CGRect rect_mission = CGRectMake(0, stringSize.height + stringSize_award.height+ 190, 280, stringSize_mission.height+60);
于 2013-08-08T10:12:47.057 回答
1

您的代码应该可以正常工作。尝试更改numberOfLines标签并将其设置为可以扩展的最大数量。

于 2013-08-08T10:17:15.017 回答
1

您的代码是正确的,但您需要将 numberOfLines 设置为 0。因为它默认为 1。

lbltitle.numberOfLines = 0;
于 2013-08-08T10:05:02.210 回答
1

你可以试试这个

 lbltitle.text = mytitleString;
 lbltitle.numberOfLines=0;
    [lbltitle sizeToFit];
于 2013-08-08T10:05:02.463 回答
1

尝试这个:

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0.0, 0.0, 320.0, 34.0)];
[label setBackgroundColor:[UIColor clearColor]];
[label setNumberOfLines:0];
label.adjustsFontSizeToFitWidth = YES;
label.minimumFontSize = 10.0;
[label setTextColor:[UIColor blackColor]];
[label setFont:[UIFont fontWithName:@"YourFont" size:15]];
[label setTextAlignment:UITextAlignmentCenter];
[label setText:yourText];
于 2013-08-08T10:09:24.737 回答
1
    CGFloat height=[yourlable sizeWithFont:[UIFont fontWithName:@"Arial" size:31] constrainedToSize:CGSizeMake(yourlable.frame.size.width,1000) lineBreakMode:UILineBreakModeWordWrap].height; 

你得到标签的动态高度。

于 2013-08-08T10:22:55.323 回答