如何找出何时UILabel的wordwraps

我为我的tableViewController创build了几个不同的UITableViewCell ,这是因为我有不同的位数据,我想显示取决于返回的内容。 正因为如此,每个UITableViewCell都有不同的高度。

这一切都很好,但是我的一个UILabel必须显示一个很大的NSString ,所以我不得不把它换到第二行,唯一的问题是它弄乱了我的UITableViewCell格式化。

我的问题是,当接收NSStringUILabel必须使用wordrap时,是否有可能标记或捕获某种types的动作,因为NSString的大小太长了?

或者有没有一种方法来计算NSString的物理长度(不是string中有多less字符),所以我可以决定嘿,我需要重新格式化我的UITableViewCell ..

任何帮助将不胜感激。

通常的方法是使用sizeWithFont:constrainedToSize:lineBreakMode:获取string的大小。 你这样使用它:

 CGSize stringSize = [theString sizeWithFont:[UIFont fontWithName:@"Helvetica Neue" size:12] constrainedToSize:CGSizeMake(320, 3000) lineBreakMode:NSLineBreakByWordWrapping ]; 

这是为表格单元格的整个宽度设置的,但是您希望使用标签的宽度。

我不知道我是否理解,但你有你的tableviewcell的权利? 而你有一个NSString也许在UITextView中,这个textview的内容高度比tableviewcell高。 那么,你应该首先计算UITextview的内容,添加到列表中,当heightforRowAtindexPath被调用时,你应该计算新的高度(content textview)加上一些东西……并且为了解决最大长度,你应该计算一个字符限制或限制为线..

一些有用的代码:

 //resize height with content of UITextView CGRect frame = _textView.frame; frame.size.height = _textView.contentSize.height; _textView.frame = frame; //delegate textview to calculate limit for text. - (void)textViewDidChange:(UITextView *)textView{ NSInteger restrictedLength=140; NSString *temp=textView.text; if([[textView text] length] > restrictedLength){ textView.text=[temp substringToIndex:[temp length]-1]; } 

}

请记住,您需要在调用heightforRowAtIndexPath之前计算UITextview中的限制/大小内容。 当它叫你已经需要知道你的细胞的最大高度。