我为UITableViewCell
创建了几个不同的tableViewController
,这是因为根据回来的情况,我想显示不同的数据位。因此,每个UITableViewCell
都有不同的高度。
这一切都很好,但我的一个UILabel
必须显示一个很大的NSString
,这么大,以至于我不得不将它换成第二行,这里唯一的问题是它弄乱了我的UITableViewCell
格式。
我的问题是,当UILabel
收到NSString
必须使用自动翻译时,是否有可能标记或捕获某种类型的操作,因为NSString
的大小太长了?
或者有没有办法计算NSString
的物理长度(不是字符串中有多少个字符),所以我可以决定嘿我需要重新格式化UITableViewCell
..
非常感谢任何帮助。
答案 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计算限制/大小内容。当它打电话时你已经需要知道你的最大高度。