Ios UILabel LineBreakMethod

Ios UILabel LineBreakMethod,ios,objective-c,uilabel,line-breaks,Ios,Objective C,Uilabel,Line Breaks,我试图根据包含的文本打破标签。代码如下: mnhmeioLabel.numberOfLines=0; mnhmeioLabel.lineBreakMode=NSLineBreakByWordWrapping; [mnhmeioLabel sizeToFit]; 虽然它似乎只是偶尔起作用。我添加了我的问题和我想要的东西的快照 问题出在红色的盒子里,它以一种我无法理解的方式打破了界限。我想要的结果在黄色框中。似乎您的标签宽度在运行时正在更改。为UILabel使用固定的宽度/高度我认为文本中可能有来

我试图根据包含的文本打破标签。代码如下:

mnhmeioLabel.numberOfLines=0;
mnhmeioLabel.lineBreakMode=NSLineBreakByWordWrapping;
[mnhmeioLabel sizeToFit];
虽然它似乎只是偶尔起作用。我添加了我的问题和我想要的东西的快照


问题出在红色的盒子里,它以一种我无法理解的方式打破了界限。我想要的结果在黄色框中。

似乎您的标签宽度在运行时正在更改。为UILabel使用固定的宽度/高度

我认为文本中可能有来自json的空格

试试这个:

      NSString * jsonAfterOmittingSpace=[jsonString stringByReplacingOccurrencesOfString:@" "  withString:@""];

然后将此字符串放在标签上

首先,您应该根据文本获得标签高度

UILabel *mnhmeioLabel = [[UILabel alloc] initWithFrame:giveYourframe];
[mnhmeioLabel setText:heregiveYourText]
mnhmeioLabel.lineBreakMode=NSLineBreakByWordWrapping;
    // get height base on label text and size
CGFloat height=[self getStringHeightforLabel:mnhmeioLabel];
    //set fram after getting height  

cell.mnhmeioLabel.frame=CGRectMake(cell.mnhmeioLabel.frame.origin.x,cell.mnhmeioLabel.frame.origin.y,cell.mnhmeioLabel.frame.size.height,height);


[cell.mnhmeioLabel sizeToFit];
//叫这个来获得高度

-(CGFloat)getStringHeightforLabel:(UILabel *)label
{
CGSize maximumLabelSize = CGSizeMake(label.frame.size.width,9999);
CGSize stringSize= [label.text sizeWithFont:label.font
                              constrainedToSize:maximumLabelSize
                                  lineBreakMode:label.lineBreakMode];
return stringSize.height;
}

标签位于tableview单元格中,并且具有固定的宽度和高度。请记录标签的宽度和高度,然后签入单元格FORROWATINDEXPATH:。。从图片上看,标签的宽度似乎在某种程度上发生了变化。请确保您在单词之间没有留出太多空间,以至于在设置标签宽度后总是调用
[mnhmeioLabel sizeToFit]
text@slecorne我总是在设置文本后执行此操作。@AshutoshMishra如何检查此操作?文本是从json文件读取的,并且是固定的。请通过打印NSLOg检查您端的json文本