我在表格单元格的详细视图中以编程方式创建标签。我正在相应地设置文本并为其设置标签高度。这是我的代码:
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;
但问题是如果它是多行,我无法设置标签的高度。我如何实现这一目标?
答案 0 :(得分: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
动态的高度。 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;
答案 1 :(得分: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;
我还建议不要使用方法sizeToFit
,因为当您多次调用时 - 标签可能会变得太窄。
答案 2 :(得分:2)
请试试这个:
CGFloat height=[mytitleString sizeWithFont:[UIFont fontWithName:@"Arial" size:14] constrainedToSize:CGSizeMake(500, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap].height;
希望这会对你有所帮助。
答案 3 :(得分:1)
您的代码是正确的,但您需要设置numberOfLines为0.因为它是1默认值。
lbltitle.numberOfLines = 0;
答案 4 :(得分:1)
你可以试试这个
lbltitle.text = mytitleString;
lbltitle.numberOfLines=0;
[lbltitle sizeToFit];
答案 5 :(得分: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];
答案 6 :(得分:1)
CGRect rect_mission = CGRectMake(0, stringSize.height + stringSize_award.height+ 190, 280, stringSize_mission.height+60);
答案 7 :(得分:1)
您的代码应该可以正常运行。
尝试更改标签的numberOfLines
并将其设置为可以扩展的最大数量。
答案 8 :(得分:1)
CGFloat height=[yourlable sizeWithFont:[UIFont fontWithName:@"Arial" size:31] constrainedToSize:CGSizeMake(yourlable.frame.size.width,1000) lineBreakMode:UILineBreakModeWordWrap].height;
并获得标签的动态高度。