1

我为我的 s 创建了几个不同UITableViewCell的 s tableViewController,这是因为我有不同的数据位要显示,具体取决于返回的内容。正因为如此,每个UITableViewCell人的高度都不一样。

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

UILabel我的问题是,当接收 aNSString必须使用 wordrap时,是否可以标记或捕获某种类型的操作,因为它的大小NSString太长?

或者有没有办法计算物理长度(不是字符串中有多少个字符),NSString所以我可以决定嘿我需要重新格式化我的UITableViewCell..

任何帮助将不胜感激。

4

2 回答 2

3

通常的方法是使用 sizeWithFont:constrainedToSize:lineBreakMode: 来获取字符串的大小。你像这样使用它:

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

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

于 2013-02-14T02:33:13.210 回答
0

我不知道我是否理解得很好,但你有你的 tableviewcell 的高度吗?并且您可能在 UITextView 中有一个 NSString,并且 textview 的内容高度高于 tableviewcell。好吧,你应该首先计算 UITextview 的内容,添加到一个列表中,当 heightforRowAtindexPath 被调用时,你应该计算新的高度(内容 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 计算限制/大小内容。当它调用时,您已经需要知道单元格的最大高度。

于 2013-02-14T02:05:55.470 回答