在UItableview单元格中的GrowingTextView或可扩展的textview

时间:2018-06-19 01:43:28

标签: ios swift uitableview

我希望在表格单元格中实现可扩展的textview,我找到了GrowingTextView,但我仍然无法实现。我需要从用户那里获得输入,当用户输入时,单元格将自动调整大小。有没有更简单的实施或指导?谢谢大家

enter image description here

2 个答案:

答案 0 :(得分:1)

实际上你不需要第三方库就可以了。

  1. 将GrowingTextView更改为UILabel
  2. 将UILabel配置到Top, Left, Right, and Bottom到单元格,并根据UILabel制作“标题”标签 这很重要,因为细胞大小取决于UILabel的含量。

  3. numberOfLines设为0并

  4. lineBreakMode设为word wrappingcharacter warpping
  5. 设置tableView.rowHeight = UITableViewAutomaticDimensiontableView.estimatedRowHeight = 150 // or wtever you found reasonable
  6. 对于这样的任务,我建议你可以在互联网上做更多的研究而不是如此快速地使用第三方库,这里的关键字是动态表格视图单元格,通过在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;
}