我希望在表格单元格中实现可扩展的textview,我找到了GrowingTextView,但我仍然无法实现。我需要从用户那里获得输入,当用户输入时,单元格将自动调整大小。有没有更简单的实施或指导?谢谢大家
答案 0 :(得分:1)
实际上你不需要第三方库就可以了。
UILabel
将UILabel配置到Top, Left, Right, and Bottom
到单元格,并根据UILabel制作“标题”标签
这很重要,因为细胞大小取决于UILabel的含量。
将numberOfLines
设为0并
lineBreakMode
设为word wrapping
或character warpping
tableView.rowHeight = UITableViewAutomaticDimension
和tableView.estimatedRowHeight = 150 // or wtever you found reasonable
对于这样的任务,我建议你可以在互联网上做更多的研究而不是如此快速地使用第三方库,这里的关键字是动态表格视图单元格,通过在Google上搜索有很多教程帮助你而不使用第3党的图书馆。
答案 1 :(得分:0)
您可以使用原生UITextView实现它。
在文本视图的委托
中实现此功能NA
然后,在表视图的委托
中实现它- (void)textViewDidChange:(UITextView *)textView{
CGRect oldFrame = textView.frame;
CGSize constraint = CGSizeMake(yourTextViewWidth, MAXFLOAT);
CGRect rect = [textView.text boundingRectWithSize:constraint options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:textView.font} context:nil];
CGSize size = CGSizeMake(rect.size.width, rect.size.height);
[textView setFrame:CGRectMake(oldFrame.origin.x, oldFrame.origin.y, oldFrame.size.width, size.height + 5)];
// These 2 lines to force UITableView to redo the height calculation.
[self.yourTableView beginUpdates];
[self.yourTableView endUpdates];
}
更新 Swiftify v4.1.6738转换的Swift版本 - https://objectivec2swift.com/
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *yourTextViewText;
// You get the text either from the same way you did in cellForRowAtIndexPath dataSource
// or if you already referenced UITextView as your property you can easily retrieve the text by calling self.yourTextView.text
CGSize constraint = CGSizeMake(yourTextViewWidth, MAXFLOAT);
CGRect rect = [text boundingRectWithSize:constraint options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:yourFontSize]} context:nil];
CGSize size = CGSizeMake(rect.size.width, rect.size.height);
CGFloat height = MAX(size.height, yourDefaultCellHeight);
return height + 5;
}