CGFloat constrainedSize = 500.0f;
UIFont * myFont = [UIFont fontWithName:@"Arial" size:19]; //or any other font that matches what you will use in the UILabel
CGSize textSize = [myText sizeWithFont: myFont
constrainedToSize:CGSizeMake(constrainedSize, CGFLOAT_MAX)
lineBreakMode:NSLineBreakByWordWrapping];
lblDescription=[[UILabel alloc]initWithFrame:CGRectMake(10,y, 300,textSize.height)];
我已尝试过此代码来管理动态文本。但如果数据变大,则不会显示整个文本。
答案 0 :(得分:1)
您将大小限制为宽度= 500pt,但您的文本字段仅为300pt宽。
编辑:
看来,我不清楚。如果使用sizeWithFont计算标签的高度并将约束宽度设置为500pt(constrainedSize)并使用计算出的高度,则在宽度仅为300pt的标签上,计算出的高度不正确。
这就是我的工作方式:
CGFloat constrainedSize = 300.0f;
UIFont * myFont = [UIFont fontWithName:@"Arial" size:19]; //or any other font that matches what you will use in the UILabel
CGSize textSize = [myText sizeWithFont: myFont
constrainedToSize:CGSizeMake(constrainedSize, CGFLOAT_MAX)
lineBreakMode:NSLineBreakByWordWrapping];
UILabel* lblDescription=[[UILabel alloc]initWithFrame:CGRectMake(10.0, 10.0, constrainedSize, textSize.height)];
lblDescription.lineBreakMode = NSLineBreakByWordWrapping;
lblDescription.numberOfLines = 0;
lblDescription.font = myFont;
lblDescription.text = myText;
再次:使用与用于计算的标签(font,size,lineBreakMode)相同的属性,否则它将不适合。
答案 1 :(得分:0)
那是因为你是分配并启动UILabel
,并且永远不会为更大尺寸的文本重置它的框架。
只需在文字大小更改后设置UILabel的框架。
此行将标签的大小设置为textSize.height,并且不会更改。
lblDescription=[[UILabel alloc]initWithFrame:CGRectMake(10,y, 300,textSize.height)];
您可以调用setFrame以编程方式更改此内容。
答案 2 :(得分:0)
要显示较大的文字/多行文字,您应该使用UITextView
。它旨在解决这个问题。
答案 3 :(得分:0)
这里是用于在标签
中设置动态文本的代码 CGSize maximumLabelSize = CGSizeMake(300,9999);
CGSize expectedLabelSize = [label.text sizeWithFont:label.font
constrainedToSize:maximumLabelSize
lineBreakMode:label.lineBreakMode];
CGRect newFrame = label.frame;
newFrame.size.height = expectedLabelSize.height;
label.frame = newFrame;
我希望这对你有帮助..