如何找出何时UILabel的wordwraps
我为我的tableViewController
创build了几个不同的UITableViewCell
,这是因为我有不同的位数据,我想显示取决于返回的内容。 正因为如此,每个UITableViewCell
都有不同的高度。
这一切都很好,但是我的一个UILabel
必须显示一个很大的NSString
,所以我不得不把它换到第二行,唯一的问题是它弄乱了我的UITableViewCell
格式化。
我的问题是,当接收NSString
的UILabel
必须使用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中的限制/大小内容。 当它叫你已经需要知道你的细胞的最大高度。