如何找出UILabel wordwraps的时间

时间:2013-02-14 01:48:47

标签: ios uitableview nsstring uilabel

我为UITableViewCell创建了几个不同的tableViewController,这是因为根据回来的情况,我想显示不同的数据位。因此,每个UITableViewCell都有不同的高度。

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

我的问题是,当UILabel收到NSString必须使用自动翻译时,是否有可能标记或捕获某种类型的操作,因为NSString的大小太长了?

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

我不知道我是否理解得很好,但你的桌面视频高度合适吗?你可能在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计算限制/大小内容。当它打电话时你已经需要知道你的最大高度。